addClass如果包含匹配

时间:2010-02-13 12:51:04

标签: javascript jquery

HTML:

<li class="widgetcontainer widget_text" id="text-3">
   <h3 class="widgettitle">Static Ad</h3>
   <div class="textwidget"><img alt="" src="static/announcement.png"></div>
</li>

jQuery的:

if( $('.widget_text')[0] ) {
    $('.widgettitle').each(function() {
      if ( $(this).containts('Static Ad') ) {
        $(this).parent().addClass('myclass');
      }
    }); 
}

......没有用。既不:

if( $('.widget_text')[0] ) {
    $('.widget_text').each(function() {
      if ( $(this).children('h3:contains:("Static Ad")') ) {
        $(this).parent().addClass('static-ad');
      }
    }); 
}

我该如何解决?

谢谢!

3 个答案:

答案 0 :(得分:4)

你有一个拼写错误:if ( $(this).contains('Static Ad') ) {

尝试:

$('.widgettitle:contains("Static Ad")').parent().addClass('myclass');

$('.widget_text').each(function() {
   if ( $(this).children('h3:contains("Static Ad")').length > 0 ) {
     $(this).addClass('static-ad');
   }
})

您的代码中还有一个冒号:(删除它),我认为您必须删除parent()

除此之外,无需测试$('.widget_text')[0]。如果没有类widget_text的元素,$('.widget_text').each()无论如何都不会做任何事情;)

答案 1 :(得分:1)

$('.widgettitle:contains("Static Ad")').parent().addClass('myclass');

在这里阅读更多内容:

http://api.jquery.com/contains-selector/

这里有一个演示:

http://jsbin.com/alega3/2

答案 2 :(得分:1)

jQuery.contains用于测试一个DOM节点是否在另一个DOM节点内。

请改为尝试:

$('.widget_text').filter(function() {
    return $(this).find('.widgettitle').text().indexOf('Static Ad') > -1;
}).addClass('myclass');

这将选择 widget_text 类的所有元素,过滤掉那些没有带有 widgettitle 类的后代的文本中带有“静态广告”的类,并添加< em> myclass 到它。