Frage

Hallo, ich bin mit diesem Markup:

<div id="main">
     <div nam="item">1</div>
     <div nam="item">2</div>

     <div>
           <div nam="item">3</div>
           <div nam="item">4</div>
           <div nam="item">5</div>
     </div>

     <div nam="item">6</div>
     <div nam="item">7</div>
</div>

ich jetzt die Auswahl nur das direkte Kind divs mit dieser Methode:

var divs = $("#main > [nam]"

meine Frage - ich will in einer Funktion, dies zu tun, wo ich nur das übergeordnete div passieren, wie würde ich den Wähler ändern muß

function get_rootChildren(div)
{
      return($("* > [nam]",div));
}

^ dies ist falsch, aber ich denke, u wissen, was ich meine - wie dies geschehen könnte? thx, Fuxi

War es hilfreich?

Lösung

Vielleicht:

$("#main > div.item")

jQuery Selector Docs

  

parent > child

     

Spiele alle untergeordneten Elemente von „Kind“ von Elementen angegeben spezifiziert durch „Eltern“.

Zur Beantwortung Teil zwei - ich würde benutzen .children() etwas wie folgt aus:

function get_rootChildren(div) {
   $(div).children('div.item');
}

Andere Tipps

$('#main > div.item')

die #main div wählt, dann Direkt Kind div-Elemente mit einer Klasse von Elemente auswählen.

nur $ ( "# main> div.item") verwenden. die „>“ Selektor stellt sicher, dass das, was Sie nach stellen, die Kinder von dem, was vor kommt.

Modifizierte neue Frage passen

//returns direct children of parent which are divs and have an attribute named name with value item
function get_rootChildren(parent){
  return $(" > div[nam='item']", parent);
}

Wenn Sie Ihre Struktur Code wirklich wie die Proben Sie zur Verfügung gestellt aussehen werde dann die folgende es tun wird.

$('#main > div.item')

Hier finden Sie auch in der Lage komplexere Strukturen zu behandeln

$("#main > div.item:not(:has(>div))").each(function(index,item){
    alert($(item).text());
});

z. auf dem nach meinem zweiten Selektor würde immer noch nur 1,2,6,7 liefern, während die ersten 1,2,3,5,6,7

liefern würde
<div id=main>
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">
    <div class="item">3</div>
  </div>
  <div>
    <div>4</div>
  </div> 
  <div class="item">
    <div>5</div>
  </div> 
  <div class="item">6</div>
  <div class="item">7</div>
</div>

Wenn Sie die ID des Eltern als String sind vorbei, könnten Sie den Ausdruck erstellen, bevor Sie es nennen:

function get_rootChildren(divId) {
    var expr = "#" + divId + " > [nam]"; // creates expression for jQuery call
    return $(expr);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top