我有以下HTML;
<p class="postcontent">
<img src="#">
Some Text
</p>
我希望只能隐藏文字。 到目前为止,我有这个;
jQuery(function($) {
$(".postcontent").$('[type=text]').hide();
});
编辑:我对html没有任何控制权,所以我需要通过Jquery添加它。
答案 0 :(得分:3)
您可以将文本包装在FLY上然后隐藏它:
<p class='postcontent'> <a href=#> dsds </a> aaa </p>
$('.postcontent').contents().filter(function() {
return this.nodeType == 3; })
.wrap('<label"> <label />').parent().hide();
根据评论进行更新:
为什么会创建两个标签?这很简单,因为有两个文本节点...... :
<p class='postcontent'> (!!FirstTextNode!!)
<a href=#> dsds </a> (!!SecondTextNode!!) aaa
</p>
答案 1 :(得分:1)
据我所知,您无法直接将CSS应用于文本节点。
您可能需要将要隐藏的文字换行为div
或span
这样的新元素。尝试像
<p class="postcontent">
<img src="#">
<span class="posttext">
Some text
</span>
</p>
然后
$(".postcontent .posttext").hide();
答案 2 :(得分:1)
您必须将文本包装在另一个元素中,例如span
或label
并隐藏:
HTML 的
<p class="postcontent">
<img src="#">
<label>some Text</label>
</p>
JQuery的的
$(".postcontent > label").hide();
答案 3 :(得分:1)
如果由于某种原因您无法编辑源html,则必须使用.contents
来获取文本节点:
$(".postcontent").contents().each(function(){
if(this.nodeType == 3){
$(this).wrap("<div>").parent().hide();
}
});
答案 4 :(得分:0)
这将清除示例中的文本。然后,您可以存储文本并在需要时将其重新添加。这是一个分解其工作原理的jsfiddle:http://jsfiddle.net/brentmn/SXgZc/
var pc = $('.postcontent');
pc.html(pc.html().replace(pc.text().trim(), ''));
答案 5 :(得分:0)
将要隐藏的文本放在元素中,然后通过调用id隐藏。