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');
}
});
}
我该如何解决?
谢谢!
答案 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/
这里有一个演示:
答案 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 到它。