在元素之间定位文本

时间:2011-07-15 15:08:14

标签: jquery jquery-selectors

我有以下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 hererandom stuff here之间定位文字?如果可能,我真的想隐藏这个文本。

由于

2 个答案:

答案 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;
}
相关问题