需要有关jQuery条件的帮助,该条件基于匹配的文本删除容器元素

Need help with jQuery conditional that removes container element based on matched text

本文关键字:条件 于匹配 文本 删除 元素 jQuery 帮助      更新时间:2023-09-26

这是我的标记:

  <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/