我希望使用jQuery遍历html页面的DOM结构中的所有元素。基本上只需要body标签内的元素。
我想这样做的原因是我想获取body结构中每个元素的位置。
我搜索了一下,但没有找到答案。
非常感谢您的帮助。
我想这样做的原因是我想获取body结构中每个元素的位置。
我搜索了一下,但没有找到答案。
非常感谢您的帮助。
$('body *').each(function() {
// do stuff
});
如果你有内联的<script>
标签等,你可以添加一个:not
选择器来排除它们:
$('body *:not(script, style, noscript)').each(function() {
// do stuff
});
正如评论和jQueryall选择器文档中指出的那样,这种方法可能性能不佳。虽然我没有进行任何经验测试,但以下方法可能性能更好:
$('body').find('*').not('script, style, noscript').each(...);
最佳表现的解决方案是使用 getElementsByTagName
而不是 jQuery 选择器:
$(document.body.getElementsByTagName("*")).each(function () {
// Do something here
});
在选择器中与任何东西结合使用*
通常不是一个好主意,正如jQuery文档本身所指出的:
警告:除了单独使用之外,所有或通用选择器非常缓慢。
http://api.jquery.com/all-selector/
如果你真的想要,你可以使用以下任何一种变体,尽管它们都不会给你像getElementsByTagName
那样好的性能:
$(document.body).find("*");
$("body").find("*");
$("*", document.body);
each
回调函数内执行检查。 - Andy Ethis
指向 DOM 元素,因此您可以使用this.name
。将其包装在$(this)
中将其转换为一个 jQuery 对象,该对象没有name
属性。 - roryfthis.tagName
来获取标签名称。this.name
会指向某些元素上存在的name
属性,比如<a>
和<input>
,但并不适用于所有元素。 - Andy E