jQuery将类添加到具有子元素'.class'的每个元素

jQuery将类添加到具有子元素'.class'的每个元素,jquery,each,addclass,Jquery,Each,Addclass,我正在尝试向somecontainer中的每个锚点添加一个类,其子容器具有.someclass 比如说 <div id="container"> <a><span class="someclass"></span></a> <a></a> <a><span class="someclass">/span></a> </div> 更新:。返回的是布尔值而不是j

我正在尝试向somecontainer中的每个锚点添加一个类,其子容器具有.someclass

比如说

<div id="container">
<a><span class="someclass"></span></a>
<a></a>
<a><span class="someclass">/span></a>
</div>
更新:。返回的是布尔值而不是jQuery对象。这就是为什么 代码不起作用


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

<div id="container">
<a><span class="someclass"></span></a>
<a></a>
<a><span class="someclass"></span></a>
</div>
i、 e.选择所有锚点,这些锚点是ID为container的元素的后代,并且具有someclass类的后代

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

$('#container a').filter(function(){
    return $(this).has('.someclass').length > 0
}).each(function(){
    $(this).addClass('anotherclass');
});
对于要保留的任何元素,函数都需要返回true,对于不保留的任何元素,函数都需要返回false。

请尝试:

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

基本上,我们一直向下查找具有类“someclass”的元素:$“container a.someclass”,然后从那里返回到封闭的锚点:.parents“a”,这是需要添加类“anotherclass”的地方。

这将把类添加到跨度中。这不是我们想要的。@Jon你是想让它与选择器或函数一起使用吗?@JanDvorak我怀疑这是因为他的HTML格式不正确,没有关闭spans@Asad那么我相信在同样的情况下,它也会被破坏。@Asad:有一个函数,主要用于选择器不能剪切它的时候。这个代码只是一个例子。实际代码没有未关闭的标记。
$('#container a').filter(function(){
    return $(this).has('.someclass').length > 0
}).each(function(){
    $(this).addClass('anotherclass');
});
jQuery('#container a .someclass').parent().addClass('anotherclass');​
$('#container a .someclass').parents('a').addClass('anotherClass');