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

标签 jquery each addclass

我正在尝试向 #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 a boolean 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/

相关文章:

javascript - jQuery 将页脚贴在页面底部

javascript - 变量没有被正确分配,可能的范围问题(在 getJSON() 中的 each() 中有一个开关的函数)

jQuery .addclass 到多个 div

javascript - 函数内的单个函数不会触发,而其他函数会触发

javascript - 使 div 像模态一样弹出

javascript - HTML 类的 jQuery .each() 迭代 - 定义了依赖于订单类的不一致行为

jQuery UI addClass(类,持续时间)不起作用

events - MooTools – 单击 anchor 将类添加到页面,并延迟加载 anchor 链接

javascript - 将 4 个函数调用堆叠在一起

jquery - 获取 div 的高度并将其应用于 div 内的元素