我有以下结构
<ul>
<li><a ...>something</a></li>
...
<li><a ...>blabla</a></li>
<ul>
我需要删除锚点文本为blabla的li
元素。
我如何选择这个元素?
$(--what selector here--)
或者我是否需要遍历每个li
并将其.text()
值与'blabla'进行比较?
答案 0 :(得分:39)
如果你想要一个包含(子串匹配),那么:contains()
就可以了:
$('li:contains("blabla")').remove();
如果您想要完全匹配,例如不匹配“blablabla”,您可以使用.filter()
:
$('li').filter(function() { return $.text([this]) === 'blabla'; }).remove();
答案 1 :(得分:4)
$('li > a:contains("blabla")').remove();
我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