jQuery addClass 到每个具有子元素的元素'.class'



我正在尝试为#somecontainer中的每个锚点添加一个类,其孩子有.someclass

例如。

<div id="container">
<a><span class="someclass"></span></a>
<a></a>
<a><span class="someclass">/span></a>
</div>

在上面的代码中,我希望第一个和第三个锚点有一个类".otherclass"我试过这段代码,但它似乎不起作用

jQuery('#container a').each(function(){
jQuery(this).has('.someclass').addClass('anotherclass');
})

更新.has()返回一个boolean而不是jQuery对象。这就是为什么 代码不起作用

我怀疑您的问题源于您的 HTML 格式不正确,即您需要关闭您的跨度。

<div id="container">
<a><span class="someclass"></span></a>
<a></a>
<a><span class="someclass"></span></a>
</div>

此外,通过使用 :has 仅选择包含与所需类名匹配的元素的定位点,可以稍微简化代码:

$('#container a:has(.someclass)').addClass('anotherclass');

即"选择所有作为 ID container 的元素的后代并且具有类 someclass 的后代的锚点"

正如 Jon 所指出的,另一种方法是使用基本选择器,然后使用自定义函数过滤生成的集合:

$('#container a').filter(function(){
    return $(this).has('.someclass').length > 0
}).each(function(){
    $(this).addClass('anotherclass');
});

该函数需要为要保留的任何元素返回true,并为不保留的任何元素返回false

尝试:

$('#container a .someclass').parents('a').addClass('anotherClass');

基本上,我们一路向下找到类 'someclass' 的元素: $('#container a .someclass') ,然后从那里回到封闭锚点:.parents('a') ,这是需要添加类 'otherclass' 的地方。

jQuery('#container a .someclass').parent().addClass('anotherclass');​

最新更新