2017-01-09 2 views
0

Ich habe Probleme beim Targeting des ersten Elements in einem Listenelement mit: zuerst.Ziel erstes Element innerhalb des übergeordneten Elements

<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"); 
    } 

Ich bin nur versuchen, die Kinder des ersten ul innen 321. Statt zu zielen, ich hinzufüge, 380, 382 und 385 auf das Array, wenn ich nur 380 und 382 hinzugefügt werden soll

+0

Keines der Elemente verwenden Sie verweisen ('.box-cont' oder' li.box' usw.) vorhanden sind, in Ihrem Beispiel HTML. – moopet

+0

Was 'div'? Ich sehe kein 'div' in Ihrem Beispiel –

+2

Es klingt als ob Sie nur' $ target.find ("ul: first> li") benötigen. Je (function() '(oder besser:' map() ') obwohl sehend Ein vollständigeres Beispiel Ihres HTML würde dies bestätigen –

Antwort

2

Es wird in der Tat alle li finden. Was du willst, sind direkte Nachkommen. Entweder Fund von Kindern ersetzen oder "ul:first>li" als jQuery-Selektor

Verwandte Themen