需要有关jQuery条件的帮助,该条件基于匹配的文本删除容器元素
Need help with jQuery conditional that removes container element based on matched text
这是我的标记:
<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是否包含单词"盈余"(它可以在文本中的任何位置,应该忽略大写)。如果没有,包裹在UL周围的整个DIV应该连同里面的所有东西一起移除。
非常感谢您的帮助!
这个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/
$('ul.eventslist').filter(function () {
return !$(this).find('li:first').text().match(/earnings/i);
}).parent().remove();
jsFiddle演示
说明:
- 在
.eventslist
列表上运行.filter()
,并仅保留第一个li
中没有eanings
的列表 - 删除这些列表的父级(基本上是
div
)。如果标记可能发生更改,也可以使用closest('div')
来代替parent()
。最防弹的方法是给父级div
一个类,然后使用closest('div.container')
虽然上面的答案有效,但我更喜欢jQuery选择器的简单性。
$('ul.eventslist > li:first-child').not(":contains('Earnings'), :contains('earnings')").closest('div').remove();
我认为这更容易阅读和更新以后<--这是我的看法
http://jsfiddle.net/natedavisolds/QFbD2/3/
相关文章:
- 如果条件匹配,则停止执行脚本
- 如果条件推送包含/匹配字符串的值
- 从 JSON 对象数组中获取与条件匹配的文档
- jQuery 查找与条件匹配的元素
- RethinkDB:条件追加启动(仅当特定字段匹配时)
- yii2:依赖于Action的条件显示/显示字段
- 如何将此函数应用于以下JsonML中的每个匹配元素
- jquery等价于php'如果ip等于'条件
- 函数仅适用于第一个条件
- jQuery是否满足完全匹配类的条件
- Undercore findWhere函数,用于查找与条件a或b匹配的元素
- Javascript正则表达式和获取所有匹配项,它类似于preg_match_all(PHP)
- 正则表达式.在满足条件之前,避免匹配字符串
- 如果未评估条件 - 则所有选项都不匹配
- 将数组的至少“N”个元素与条件列表匹配
- 循环遍历数组匹配变量并分配要执行的条件
- 将字符串中的正则表达式模式替换为依赖于匹配项的替换字符串
- Lodash.js等效于搜索符合条件的对象
- 如何匹配具有开头和结尾条件以及匹配组的字符串
- 需要有关jQuery条件的帮助,该条件基于匹配的文本删除容器元素