Если вы в порядке удаления текста, вместо того, чтобы просто его скрыть, вы можете сделать это:
$('ul > li:has(ul)').each(function() {
if( this.firstChild.nodeType === 3 ) {
this.removeChild( this.firstChild );
}
});
Это смотрит на элементы <li>
верхнего уровня, проверьте, есть ли их firstChild
является текстовым узлом и, если это так, удаляет его.
Пример: http://jsfiddle.net/3B32a/
Было бы лучше отождествить верхний уровень с классом наul
элементов.
Если вы действительно хотите показать и скрыть его, его нужно будет содержать в элементе, а не в отдельном текстовом узле.