我想知道是否可以使用以下方法找出页面上的<p>
或<header>
标签内是否有<footer>
标签:
$("p").each(function() {
if (!($(this) in $("footer") || $(this) in $("header")) {
// logic
}
});
我的目标是选择<p>
或<header>
<footer>
标签
答案 0 :(得分:4)
首先,不要使用in
来枚举jQuery对象。对象中还有其他会干扰的属性和方法。
如果要查找不在给定容器中的p
元素,则可以使用filter()
:
var $p = $('p').filter(function() {
return $(this).closest('header, footer').length === 0;
});
但是,在可能的情况下,一种更简单的方法是构造HTML,以便将要定位的所有p
元素都放在一个公共容器中。然后,您的代码将变得更加简单明了,例如:
<header>
<p>Header p</p>
</header>
<main>
<p>Main p</p>
</main>
<footer>
<p>Footer p</p>
</footer>
var $p = $('main p');