нацеливание текста между элементами - PullRequest
0 голосов
/ 15 июля 2011

У меня есть следующий 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?Я бы очень хотел скрыть этот текст, если это возможно.

Спасибо

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Если вы в порядке удаления текста, вместо того, чтобы просто его скрыть, вы можете сделать это:

$('ul > li:has(ul)').each(function() {    
   if( this.firstChild.nodeType === 3 ) {
       this.removeChild( this.firstChild );
   }
});

Это смотрит на элементы <li> верхнего уровня, проверьте, есть ли их firstChild является текстовым узлом и, если это так, удаляет его.

Пример: http://jsfiddle.net/3B32a/

Было бы лучше отождествить верхний уровень с классом наul элементов.

Если вы действительно хотите показать и скрыть его, его нужно будет содержать в элементе, а не в отдельном текстовом узле.

0 голосов
/ 15 июля 2011

Чтобы расширить решение Патрика Д., вместо удаления текста вы можете заключить его в тег:

$('ul > li:has(ul)').each(function() {
    if( this.firstChild.nodeType === 3 ) {
        $(this.firstChild).wrap('<span class="hidden" />');
    }
});

И ваш CSS:

.hidden {
    display: none;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...