jQuery隐藏基于文本的字符串的一部分

时间:2014-01-31 20:51:20

标签: jquery hide contains

如果你有像:

这样的HTML
<div class="text">Good Stuff Hide Me</div>
<div class="text">Great Stuff Hide Me</div>
<div class="text">Best Stuff Hide Me</div>

并希望在div.text的每个实例中隐藏“隐藏我”,这样你就可以了

好东西
很棒的东西
最好的东西

你会如何用jQuery做到这一点?

$("div:contains('Hide Me')").hide();隐藏整个字符串。如何隔离要隐藏的文本?

3 个答案:

答案 0 :(得分:8)

如果您想要实际删除文字,请使用:

$('div.text').text(function (i, t) {
    return t.replace(' Hide Me', '');
})

<强> jsFiddle example

要隐藏它,请使用:

$('div.text').html(function (i, t) {
    return t.replace('Hide Me', '<span class="hidden">Hide Me</span>');
})

使用CSS .hidden { display:none; }

<强> jsFiddle example

答案 1 :(得分:1)

除了useSticks之外,另一个选项是执行j08691建议但是要使用$('.hidden').contents().unwrap()(或本机替代),如this answer所示。这样,您可以根据用户输入的内容动态地告诉它您要隐藏/取消隐藏的内容。

答案 2 :(得分:-1)

j08691有它,但是如果你要将它切换到一个跨度来隐藏它,它意味着你想把它带回来。你最好将自己的文本分成2个标签,这样你就可以更干净地搜索它,并在以后更轻松地将其恢复。

 <div class="text">Good Stuff <span class="hideMe">Hide Me</span></div>
 <div class="text">Great Stuff <span class="hideMe">Hide Me</span></div>
 <div class="text">Best Stuff <span class="hideMe">Hide Me</span></div>

所以你有

 $(".hideMe").hide()
 $(".hideMe").show()