jQuery查找文本并隐藏该文本

时间:2014-03-17 15:12:26

标签: javascript jquery

我试图隐藏段落中的文字。问题是脚本找到文本并删除整个段落。我想只删除搜索到的文本。 Demo

<div class='article'>    
    <p>Text may refer to: Contents. 1 Computers and electronics; 2 Arts and entertainment; 3 See also. Text (journal), an academic journal of language, discourse, and...</p>
</div>

$(function() {
    var foundin = $('.article p:contains("journal")');
    $(foundin).hide();
});

4 个答案:

答案 0 :(得分:4)

var foundin = $('.article p:contains("journal")');
foundin.text(foundin.text().replace(/journal/g, ""))

http://jsfiddle.net/aanN2/5/

答案 1 :(得分:1)

$(function() {
    var foundin = $('.article p:contains("journal")');
    var html = foundin.html();
    html = html.replace('journal', '<span class="hidden">journal</span>');
    $(foundin).html(html);
});

和CSS

.hidden
{
    display: none;
}

这样,通过更改.hidden样式,您可以突出显示文本而不是隐藏它。该解决方案不会影响段落其余部分的标记。

jsfiddle.

答案 2 :(得分:1)

使用类

将文本换行到隐藏的跨度中
$(function() {
    var text = 'journal';
    $('.article p').html(function(_,html) {
        return html.replace(new RegExp('('+text+')','g'), '<span class="hidden" style="display:none">$1</span>')
    });
});

再次显示你可以做到

$('.hidden').show();

FIDDLE

答案 3 :(得分:1)

  • 最好使用html()而不是text(),因为可能会有一些 段落中的HTML代码。
  • 您必须使用正则表达式替换所有 在文本中出现。
  • 您应该使用每个,因为如果有多个匹配的段落
  • ,其他一些答案将无效

http://jsfiddle.net/aanN2/7/

$(function() {
    $('.article p:contains("journal")').each(function(){
        $(this).html($(this).html().replace(/journal/g, ""))
    });
});