通过获取元素的偏移量,我有两种导航方式:
$("#selector").contents().find('#'+list1).each(function(){
var offset= $(this).offset();
});
$("#selector").find('#'+list1).each(function(){
var offset= $(this).offset();
});
有数以千计的链接。我发现有两个代码,一些链接返回偏移为0
。什么是使其成为万无一失的完美方式?
注意:所有节点都显示为block
,并显示在选择器div
中。我不能用
document.getElementById()
。
答案 0 :(得分:2)
这两者在他们搜索的内容上有所不同。如果您尝试find()
的元素是contents()
返回的元素之一,则不会返回该项目。
见这个例子:
<div id="topDiv">
<div id="targetDiv">
<div id="innerDiv">
</div>
</div>
</div>
console.log($('#topDiv').find('#targetDiv').length); // 1
console.log($('#topDiv').contents().find('#targetDiv').length); // 0
但是,如果.contents()
未返回您要查找的元素,则没有区别。你只是拉动当前元素的直接子元素,然后在这些元素上调用.find()
。
答案 1 :(得分:1)
你只需要:
var offset = $('#' + list1).offset();
id属性必须是唯一的,如果没有,你应该处理它。
.contents()
仅对在iframe中查找元素以及获取文本节点和注释非常有用。
答案 2 :(得分:0)
发现会更深入。它不仅可以找到儿童,还可以找到儿童。
内容与儿童最相似,但内容也将获取直接子集中的文本节点。话虽这么说,我想你可以说内容,就像孩子一样只会去1层,而在那里,我们正在做一个选择对象是根的选择器。
这有意义吗?
调用:contents()。find(&#34; beta&#34;)基本上只是将根设置为1层,实际上,它将为所有孩子执行选择器。
〔实施例:
a = $(".myDiv");
b = $(".myDiv").contents().find("li");
c = $(".myDiv").find("li");
在这里,您将看到它将尝试查找内容数组的结果,然后在其上调用find,这意味着它将在相应的树中运行。
只是find()
,会做同样的事情。
真正的区别在于&#34; root&#34;关于对象。对于b,contents()
数组中的每个项目都是自己搜索的根,而另一方面,.myDiv
是根。
答案 3 :(得分:0)
$("selector").contents().find()
获取匹配元素集中每个元素的子元素,包括文本和注释节点以及查找内容。
$("selector").find()
获取当前匹配元素集中每个元素的后代,由选择器,jQuery对象或元素过滤。