如果有特定的类,则将类添加到父div

时间:2015-08-25 17:44:20

标签: javascript jquery html addclass

如果<div class="widget-content">具有特定类.widget-content li a,请尝试将类添加到父div .ifthis

HTML:

<div class="widget-content">
<ul>
<li><a href="https://twitter.com/slycolor" class="ifthis"> <b>This Text Should Red</b></a>
</li>

<li><a href="https://www.facebook.com/slycolor" class="ifthis"> <b>This Text Should Red</b></a>
</li>
</ul>
</div>

我试过这个:

$('.widget-content li a').has('.ifthis').parent('.widget-content').addClass('social-sidebar'); 

但无法正常工作,请参阅此示例fiddle

2 个答案:

答案 0 :(得分:4)

选择具有课程ifthis的孩子,然后使用 parents() closest()

$('.widget-content li a.ifthis').parents('.widget-content').addClass('social-sidebar'); 

OR

$('.widget-content li a.ifthis').closest('.widget-content').addClass('social-sidebar');

您的代码无效,因为

  1. has() 只会检查其后代是否包含该选择器,您需要 filter()
  2. parent() 只会选择直接父级,因此您应该使用 parents() closest()
  3. 使用您的代码:

    $('.widget-content li a').filter('.ifthis').parents('.widget-content').addClass('social-sidebar'); 
    

答案 1 :(得分:3)

使用此:

$('a.ifthis').closest('div.widget-content').addClass('social-sidebar');

或者:

$('.ifthis').closest('.widget-content').addClass('social-sidebar');
//if only a elements have .ifthis and only div elements have .widget-content

或者:

$('.widget-content:has(.ifthis)').addClass('social-sidebar');

参考:https://api.jquery.com/closest/
    https://api.jquery.com/has-selector/

  

.closest(selector) - 返回:jQuery

     

描述:对于集合中的每个元素,通过测试元素本身并遍历DOM树中的祖先来获取与选择器匹配的第一个元素。

:has()选择器

  

jQuery(“:has(selector)”) - 返回:jQuery

     

描述:选择包含至少一个与指定选择器匹配的元素的元素。