2009-08-11 19 views
5

meine htmlJQuery Sub Selector Frage

<div id="x"> 
    <div id="x1"> 
    some text 
    <div>other text</div> 
    </div> 
    <div id="x2">just text</div> 
<div> 

meinen Anruf

Ich habe dieses Element als jeder jquery Wähler sein kann, 1 oder mehr Elemente:

var x = $("#x"); 

jetzt brauche ich (diese ist ein Plugin, das innere Elemente wie Tabs entdecken kann, um nur durch die ersten DIV-Elemente und nicht durch die ChildRends zu navigieren. Ich versuche, ...

$.each($($("div"), x), function() { 
    alert($(this).html()); 
}); 

zeigt: 1. einigen textother Text 2. anderer Text 3. nur Text

$.each($($("div"), x).siblings(), function() { 
    alert($(this).html()); 
}); 

zeigt: 1. nur Text 2. einig textother Text

Dies ist die ungefährste, aber ich brauche in der richtigen Reihenfolge. irgendein Vorschlag ? danke

ps. weil es ein Plugin ist, kann ich das nicht machen.

$("#x", "div....") 

Ich brauche diesen

#(newselector, x) 

Antwort

10

Wenn Sie nicht $("#x > div") verwenden können, weil sie mit allen Selektoren arbeiten sollten Sie denken, dann vorausgesetzt, Sie, dass bestimmte Wähler x var definiert:

var x = $('#x'); 

// this will select only the direct div children of x whatever the x is 
x.children('div'); 
+0

Das ist, was ich brauche. Vielen Dank. Nie gesehen $(). Kinder vorher. –

1

Gebrauch machen:

$("#x > div") 

als Wähler - es wird nur die direkten Kinder der div des wählen id x.

+0

Hallo Kumpel, ich sagte, ich kann nicht $ („# x“ verwenden) Da dies ein Plugin ist und $ ("# x") eine beliebige Art von Selektor sein kann, kann es $ ("*") sein. Es muss mit $ (Selektor, jqueryobj) Dank getan werden. –

+0

@Rodrigo: Die Antwort ist immer noch '>'. Sie können es auch auf andere Arten verwenden wie '$ ('> div', jqueryobj)' –

1

Diese Methode wird Ihnen den ganzen internen Text eines div:

x.children('div').each(function() { 
    alert($(this).text()); 
}); 

Wenn Sie von mehreren Kind divs kombiniert nicht alle den Text möchten, können Sie nur den direkten Zugriff auf Textknoten jeweils:

x.children('div').each(function() { 
    alert(this.childNodes[0].nodeValue); 
}); 

Anmerkung: unter der Annahme x ist ein Jquery Element durch var x = $('#x') definiert.

+0

+1 - Das wird auch funktionieren –