我在一个页面上有这个HTML:
<div class="category-products">
<div class="rugs-cat"></div>
....
</div>
这是另一个:
<div class="category-products">
<div class="toolbar-top"></div>
.....
</div>
如果.category-products
有.rugs-cat
作为后代,我正在尝试添加样式,如果没有,则将其删除。我试过这个(在dom上准备好了):
if(jQuery(".category-products").has(".rugs-cat")) {
jQuery(".category-products").css("margin-left", "150px")
}
else {
jQuery(".category-products").css("margin-left", "0");
}
但每次都会添加保证金。我确定第二页的任何地方都没有.rugs-cat
课程。
答案 0 :(得分:8)
has()
将始终返回一个对象(一个集合)。该集合有时会为空,这是您想要测试的内容:
if (jQuery(".category-products").has(".rugs-cat").length > 0)
{
jQuery(".category-products").css("margin-left", "150px")
}
else
{
jQuery(".category-products").css("margin-left", "0") ;
}
答案 1 :(得分:0)
如果$el.has(pattern)
的后代与el
匹配,则假设pattern
返回true。实际上,它返回具有这种元素的元素集。如果没有,则返回[]
(空集),这是真实的。相反,请使用此
(jQuery(".category-products").has(".rugs-cat").length)
此评估为true,因为[]
的{{1}}为0;
答案 2 :(得分:0)
Official documentation说has()
方法检索已找到元素的数组,不是布尔。你需要
if (jQuery(".category-products").has(".rugs-cat").length > 0)
而不是
if (jQuery(".category-products").has(".rugs-cat"))