2010-02-13 69 views
1

HTML:addClass如果包含匹配

<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'); 
     } 
    }); 
} 

我该如何解决?

谢谢!

回答

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()不会做任何反正;)

+0

谢谢,纠正了,但班级仍然没有添加。 – 3zzy 2010-02-13 12:56:31

+0

'.contains()'不用这种方式。它检查DOM节点是否在另一个DOM节点内。 – David 2010-02-13 13:06:05

+0

@David:是的,注意到它;) – 2010-02-13 13:08:33

1

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

试试这个:

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

这将选择所有元素widget_text类,过滤掉那些不具有后代widgettitle类在其文“静态广告”,并给它添加myclass