2017-01-09 11 views
0

最初の要素を使用してリスト項目内の最初の要素を対象とすることに問題があります。親の中の最初の要素を対象にします

<li data-id="321"> 
    <ul> 
     <li data-id="380"> 
      <ul> 
       <li data-id="385"></li> 
      </ul> 
     </li> 
     <li data-id="382"></li> 
    </ul> 
</li> 
$(".drop .position").click(function() { 
    $this = $(this); 
    $targetID = $(".box-cont.active ").closest("li.box").data("id"); 
    $childrenArray = new Array(); 
    if ($target.find("ul:first").find("li").length > 0) { 
     $target.find("ul:first").find("li").each(function() { 
      $this = $(this); 
      $childrenArray.push($this.data("id")); 
     }); 
     alert($childrenArray); 
    } else { 
     alert("no children"); 
    } 

私は唯一の代わりに321の内側に最初のULの子供たちをターゲットにしようとしている私は380と382を追加したいとき、私は配列の380、382、および385を追加しています

+0

参照する要素( '.box-cont'や' li.box'など)はサンプルのHTMLにはありません。 – moopet

+0

'div'とは何ですか?あなたの例では 'div'は表示されていません –

+2

' $ target.find( "ul:first> li")というだけのように聞こえますが、それぞれ(function() '(またはより良い:' map() ')より完全なHTMLサンプルがこれを確認します –

答えて

2

それは本当にすべての李を見つけるだろう。あなたが望むのは直接の子孫です。 子供の検索を置き換えるか、"ul:first>li"をjQueryセレクタとして使用してください。