除了span jQuery之外,如何隐藏p标签内的所有内容?

时间:2015-08-28 20:53:10

标签: javascript jquery html

我有一个<p>标记,我需要隐藏文字。<span>内部还有一个<p>,我不想隐藏此文字。这可以不使用jQuery更改标记吗?

小提琴:http://jsfiddle.net/ghogdc0x/2/

HTML:

<p class="class">
    <span>Text not to hide</span>
    <br>
    Text to hide
</p>

4 个答案:

答案 0 :(得分:2)

只需在p标签附近复制span元素,然后隐藏p标签即可。试试这个:

       xValue: new[] {  "Peter", "Andrew", "Julie", "Mary", "Dave" }, 
       yValues: new[] { "2", "6", "4", "5", "3" }) 

答案 1 :(得分:2)

您可以使用css visibility属性:

$('.class').css('visibility', 'hidden');
$('.class').children().css('visibility', 'visible');

Here is a working codepen

然后你可以通过这样做再次看到它:

$('.class').css('visibility', 'visible');

答案 2 :(得分:0)

您无法隐藏文字节点。您只能删除它们或用其他元素包装它们并隐藏该包装元素。

以下代码段隐藏了非span元素并删除了text-nodes子节点。

$('p.class').contents().each(function() {
    var $this = $(this);
    if ( this.nodeType === 3 && $.trim(this.nodeValue) ) {
        $this.remove();
        // in case that you just want to hide the text node
        // $this.wrap('<i>').parent().hide();
   } else if ( this.nodeType === 1 && this.tagName !== 'SPAN' ) {
       $this.hide();
   }
});

http://jsfiddle.net/xxpopvje/

答案 3 :(得分:0)

使用此选项并尝试将要隐藏的文本包装在包装p元素中,如

<p><span>Text not to hide</span><br/><p>Text to hide</p></p>

$('p').find('*').not('span').css('display','none');