Jquery - непосредственные дети - PullRequest
4 голосов
/ 02 июля 2010

У меня есть такая структура:

<ul id="mycustomid">
    <li><a>Item A</a>
        <ul class="children">
           <li><a>Child1 of A</a>
               <ul class="children">
                 <li><a>Grandchild of A</a>
                    <ul class="children">
                       <li><a>Grand Grand child of A</a></li>
                    </ul>
                </li>
               </ul>
           </li>
        </ul>
    </li>
    <li><a>Item B</a></li>
    <li><a>Item C</a></li>
</ul>

Теперь я использую Jquery для получения только непосредственных потомков ul # mycustomid.Но мой код возвращает меня со всеми ли в моей структуре.Как мне действовать?

Вот мой код:

$(document).ready(function() {
 var arri = $("#mycustomid>li").text();
 alert(arri);
});

Я тоже пробовал .children (), он дает мне почти такой же результат.Это действительно действует мне на нервы: (

Мой блок предупреждений выводит точно так, как показано ниже (включая эти белые пробелы):

Item A 
Child1 of A
Grandchild of A

Grand Grandchild of A


ItemBItemC

Принимая во внимание, что это должно быть просто (без пробелов):

Item A 
Item B
Item C

Чтобы понять мою проблему, вы можете проверить живую версию на http://jsfiddle.net/yS6ZJ/

Пожалуйста, укажите мне в правильном направлении,

Спасибо

Ответы [ 2 ]

9 голосов
/ 02 июля 2010

Я думаю, что ваш селектор работает просто отлично - проблема в том, что вы делаете с ним.

Когда вы звоните .text(), вы получаете все содержимое элемента. Все это, включая дочерние элементы.

Попробуйте это:

$('#mycustomid > li').each(function() {
  alert($(this).find('a:eq(0)').text());
});
1 голос
/ 02 июля 2010

Это решит вашу проблему:

$(document).ready(function() {
  var arri=$("#mycustomid > li").children('a').append('\n').text();
  alert(arri);
});

append('\n') есть только для добавления разрыва строки, чтобы в оповещении все выглядело нормально.

Чтобы включить всех внуковВы просто удаляете непосредственную ссылку на LI:

$(document).ready(function() {
  var arri=$("#mycustomid li").children('a').append('\n').text();
  alert(arri);
});

И просто чтобы получить внуков:

$(document).ready(function() {
  var arri=$("#mycustomid li").not("#mycustomid > li").children('a').append('\n').text();
  alert(arri);
});

И чтобы получить каждый уровень, вы можете пойти на:

$(document).ready(function() {
  var ChildOfA=$("#mycustomid > li > ul > li > a").append('\n').text();
  var GrandchildOfA=$("#mycustomid > li > ul > li > ul > li > a").append('\n').text();
  var GrandGrandChildOfA=$("#mycustomid > li > ul > li > ul > li > ul > li > a").append('\n').text();
  alert('List of Child1 of A children:\n\n'+ChildOfA+'\n\n'+
        'List of Grandchild of A children:\n\n'+GrandchildOfA+'\n\n'+
        'List of Grand Grand child of A children:\n\n'+GrandGrandChildOfA);
});
...