我正在尝试向 #somecontainer
内的每个 anchor 添加一个类,该 anchor 的子级具有 .someclass
例如。
<div id="container">
<a><span class="someclass"></span></a>
<a></a>
<a><span class="someclass">/span></a>
</div>
在上面的代码中,我希望第一个和第三个 anchor 有一个类“.anotherclass” 我尝试了这段代码,但似乎不起作用
jQuery('#container a').each(function(){
jQuery(this).has('.someclass').addClass('anotherclass');
})
Update:
.has()
returns aboolean
and not jQuery object. That's why the code didn't work
最佳答案
我怀疑您的问题源于您的 HTML 格式错误,即您需要关闭您的跨度。
<div id="container">
<a><span class="someclass"></span></a>
<a></a>
<a><span class="someclass"></span></a>
</div>
此外,通过使用 :has
可以稍微简化您的代码,仅选择包含与所需类名匹配的元素的 anchor :
$('#container a:has(.someclass)').addClass('anotherclass');
即“选择 ID 为 container
的元素的后代以及具有类 someclass
的后代的所有 anchor ”
正如 Jon 所指出的,另一种方法是使用基本选择器,然后使用自定义函数过滤结果集合:
$('#container a').filter(function(){
return $(this).has('.someclass').length > 0
}).each(function(){
$(this).addClass('anotherclass');
});
对于您想要保留的任何元素,该函数需要返回 true
,对于您不想保留的任何元素,该函数需要返回 false
。
关于jQuery addClass 到每个具有 '.class' 子级的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13723143/