给定两个 jquery 对象,是否有某种方法可以告诉我哪个在文档树中比另一个“更靠前”?换句话说,通过一个文档
<p id="p1" ></p>
<div id="div1">
<p id="p2"></p>
</div>
<p id="p3"></p>
是否有一些函数具有这样的行为?
$("#p1").isBefore($("#p2")); // == true
$("#p3").isBefore($("#p2")); // == false
$("#p1").isBefore(#("#p3")); // == true
请注意,我关心的是文档在 HTML 树中的位置,而不是屏幕上的物理位置。
您可以创建一个函数来执行此操作,如下所示:
(function($) {
$.fn.isBefore = function(elem) {
if(typeof(elem) == "string") elem = $(elem);
return this.add(elem).index(elem) > 0;
}
})(jQuery)
你可以在这里尝试一下 http://jsfiddle.net/nick_craver/8wBbv/2/,第一行因此也可以直接采用选择器字符串,例如:
$("#p1").isBefore("#p2");
这是做什么的.add() http://api.jquery.com/add/附加元素(或选择器)(jQuery 按文档顺序保留),然后检查它是否是两者中的第二个。
如果运行的选择器有多个元素,则返回 trueany这些元素中的一些位于传入元素或选择器“之前”,因此例如给定您的标记$("p").isBefore("#p2")
将会true
,因为至少有一个<p>
发生在“之前”#p2
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)