jquery删除列表项.text()='blabla'

时间:2010-09-14 23:29:30

标签: jquery

我有以下结构

<ul>
 <li><a ...>something</a></li>
 ...
 <li><a ...>blabla</a></li>
<ul>

我需要删除锚点文本为blabla的li元素。

我如何选择这个元素? $(--what selector here--)

或者我是否需要遍历每个li并将其.text()值与'blabla'进行比较?

3 个答案:

答案 0 :(得分:39)

如果你想要一个包含(子串匹配),那么:contains()就可以了:

$('li:contains("blabla")').remove();

如果您想要完全匹配,例如不匹配“blablabla”,您可以使用.filter()

$('li').filter(function() { return $.text([this]) === 'blabla'; }).remove();

答案 1 :(得分:4)

$('li > a:contains("blabla")').remove();

查看:contains selector

just noticed :contains进行了部分匹配。你可能需要......

$('li > a:contains("blabla")').each(function() {
     if ($(this).text() === 'blabla') {
         $(this).parent().remove();
     }
});

如果这样做,你也可以使选择器不那么严格。

...或者你可以做much neater like Nick Craver

答案 2 :(得分:1)

如果您希望避免删除包含li的{​​{1}},除非进一步嵌套blabla,请使用以下命令:

blabla;

否则,即使“blabla”不是您可能定位的位置,也会删除此HTML中的第一个$("ul li > a:contains('blabla')").parent().remove()

li