这是我的标记:
<div>
<h3>Title</h3>
<ul class="eventslist">
<li>This event would be discarded</li>
<ul>
<li>...</li>
<li>...</li>
</ul>
</li>
</ul>
</div>
<div>
<h3>Title</h3>
<ul class="eventslist">
<li>Earnings - This event would be included</li>
<ul>
<li>...</li>
<li>...</li>
</ul>
</li>
</ul>
</div>
我需要帮助编写一个条件,该条件将遍历页面上的每个UL class =“eventslist”,并检查UL class =“eventslist”下的第一个LI是否包含单词“Earnings”(它可以位于文本和资本应该被忽略)。如果没有,则应将包裹在UL周围的整个DIV与其中的所有内容一起移除。
非常感谢任何帮助!
答案 0 :(得分:1)
$('ul.eventslist').filter(function () {
return !$(this).find('li:first').text().match(/earnings/i);
}).parent().remove();
说明:
.filter()
列表中运行.eventslist
,并仅保留第一个eanings
中某处没有li
的人。div
)。如果标记可能更改,您也可以使用parent()
而不是closest('div')
。最无懈可击的是将课程提供给父div
,然后使用closest('div.container')
。答案 1 :(得分:1)
这个jQuery会做你想要的:
$(document).ready(function(){
$(".eventslist").filter(function(){
var text = $(this).children("li:first").text();
return !/earnings/i.test( text );
}).closest("div").remove();
});
jsFiddle示例:http://jsfiddle.net/dGKMj/2/
答案 2 :(得分:1)
虽然上面的答案有效,但我更喜欢jQuery选择器的简单性。
$('ul.eventslist > li:first-child').not(":contains('Earnings'), :contains('earnings')").closest('div').remove();
我认为以后更容易阅读和更新。 &lt; - 这是我的意见