我有一个<p>
标记,我需要隐藏文本。还有<span>
里面的<p>
其中我不想隐藏这段文字。这可以做到而不用使用jQuery改变标记?如何隐藏除标签jQuery以外的标签内的所有内容?
小提琴:http://jsfiddle.net/ghogdc0x/2/
HTML:
<p class="class">
<span>Text not to hide</span>
<br>
Text to hide
</p>
我有一个<p>
标记,我需要隐藏文本。还有<span>
里面的<p>
其中我不想隐藏这段文字。这可以做到而不用使用jQuery改变标记?如何隐藏除标签jQuery以外的标签内的所有内容?
小提琴:http://jsfiddle.net/ghogdc0x/2/
HTML:
<p class="class">
<span>Text not to hide</span>
<br>
Text to hide
</p>
您可以使用CSS visibility属性:
$('.class').css('visibility', 'hidden');
$('.class').children().css('visibility', 'visible');
然后你可以通过做再次使其可见:
$('.class').css('visibility', 'visible');
请注意,这种方式不会从页面流中删除元素,而只是使其不可见。 – Ahmad
只要你可以复制span元素的p标签附近,然后隐藏p标签。试试这个:
$("p").after($("p span"))
$("p").hide()
你可以不隐藏文本节点。您只能删除它们或用另一个元素包装它们并隐藏该包装器元素。
以下代码片段隐藏了非span元素并删除了文本节点子项。
$('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();
}
});
使用此,并尝试自动换行是隐藏在包装p元素像
<p><span>Text not to hide</span><br/><p>Text to hide</p></p>
$('p').find('*').not('span').css('display','none');
请注明最好的答案,以帮助未来的游客所接受。 – Ahmad