2015-05-03 18 views
0

Я пытаюсь найти все топ Ли из HTML .I имеют этот знак вверхКак найти верхний (верхний слой) li в jquery?

<ul class="chapters"> 
    <li> 
     tc_1 
    </li> 
    <li> 
     tc_2<ul> 
     <li>tc_1_1</li> 
     <li>tc_1_2</li> 
     <li>tc_1_3</li> 
     </ul> 
    </li> 
    <li> 
     tc_3 
    </li> 
</ul> 

ожидаемый ответ: tc_1 ,tc_2,tc_3

Я пытался как то на самом деле я проверить и написать свой код на консоли.

  1. Я пытался как то $('li') и я получаю null
  2. Тогда я поставил атрибут класса «главы» на ул затем попробовать, как этот $(".chapters") снова, и я получил null.

как достичь этого?

+0

попробуйте следующее: $ ('. Chapter li'). Html() – Surely

ответ

0

Вы можете перебирать childNodes из верхних li элементов и отфильтровать их первый textNode:

var textArray = $(".chapters > li").map(function() { 
    var nodes = this.childNodes, len = nodes.length; 
    for (var i = 0; i < len; i++) { 
     if (nodes[i].nodeType === 3 && $.trim(nodes[i].nodeValue).length) { 
      return $.trim(nodes[i].nodeValue); 
     } 
    } 
}).get(); 

console.log(textArray.join()); 

Here is a demo.

0

Это локализует ul, берет его непосредственные дети (каждый из li с), а затем удаляет любые subchildren, .end(), чтобы вернуться к li с, а .text() получить содержимое.

$("ul").clone().children().children().remove().end().text() 

Это возвращает

"tc_1 

      tc_2 

      tc_3" 

из-за разрывов линий и пробелов между ними.

+0

не работает .. $ ("ul") дает мне нуль – user944513

+0

Он не просил ничего убрать ... Исправьте меня, если я ошибаюсь. – ItayB

+0

, если я использовал удален, также удалите html с моего вида http://jsfiddle.net/2zemycu1/2/. Я просто хочу, чтобы проблема не удалялась из html – user944513

0

$(".chapters li").text()

должен работать.

+0

$ (". Chapters li") дайте мне null на консоли – user944513

+1

Ваш браузер? Действительно ли загружен jquery? Какую версию вы используете? – ItayB

+0

Вы правильно включили jquery lib (проверьте $)? Вы выполняете команду консоли в правильном фрейме? – collapsar

0
$('.chapters > li').each(function(){ 
    alert($(this) .clone() 
      .children() 
      .remove() 
      .end() 
      .text()); 
}); 

JSFIDDLE

для более подробного объяснения вы можете прочитать http://viralpatel.net/blogs/jquery-get-text-element-without-child-element/

+0

, пожалуйста, проверьте http://jsfiddle.net/2zemycu1/1/ – user944513

+0

, если я использовал удален, также удалите html с моего вида http://jsfiddle.net/2zemycu1/2/ .. Я просто хочу бороться, чтобы не удалять из html – user944513

Смежные вопросы