我有以下HTML
<ul>
<li>
some text here
<ul>
<li>cat1</li>
</ul>
</li>
</ul>
<ul>
<li>
random stuff here
<ul>
<li>item1</li>
</ul>
</li>
</ul>
我是否可以在<ul><li> </ul>
即some text here
和random stuff here
之间定位文字?如果可能,我真的想隐藏这个文本。
由于
答案 0 :(得分:1)
如果你没有删除文本,而不是仅仅隐藏它,你可以这样做:
$('ul > li:has(ul)').each(function() {
if( this.firstChild.nodeType === 3 ) {
this.removeChild( this.firstChild );
}
});
这会查看顶级<li>
元素,检查其firstChild
是否为文本节点,如果是,则将其删除。
示例: http://jsfiddle.net/3B32a/
最好使用ul
元素上的类来识别顶级。
如果您确实想要显示和隐藏它,则需要将其包含在元素中,而不是独立的文本节点。
答案 1 :(得分:0)
要扩展patrick dw的解决方案,而不是删除文本,您可以将其包装在标记中:
$('ul > li:has(ul)').each(function() {
if( this.firstChild.nodeType === 3 ) {
$(this.firstChild).wrap('<span class="hidden" />');
}
});
你的CSS:
.hidden {
display: none;
}