2009-08-11 11 views
5

mój htmlJQuery Selector Sub pytanie

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

moje wezwanie

mam ten element nie może być dowolny selektor jQuery, 1 lub więcej elementów:

var x = $("#x"); 

teraz muszę (ta jest wtyczką, która odkryje wewnętrzne elementy, takie jak karty), aby nawigować tylko przez pierwsze elementy DIV, a nie jej potomków. Próbuję ...

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

pokazuje: 1. niektóre textother tekst 2. inne tekstowe 3. tekstowy

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

pokazuje: 1. tekstowy 2. niektóre tekstinny tekst

jest to najbardziej przybliżony, ale potrzebuję we właściwej kolejności. jakieś sugestie ? dzięki

ps. ponieważ jest to wtyczka, której nie mogę zrobić.

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

muszę zrobić to

#(newselector, x) 

Odpowiedz

10

Jeśli nie można używać $("#x > div") dlatego powinien on współpracować ze wszystkimi selektorów myślisz następnie zakładając zdefiniowano tego konkretnego selektora do var X:

var x = $('#x'); 

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

Tego właśnie potrzebuję. Dzięki. Nigdy wcześniej nie widziałem dzieci(). –

1

przeznaczenie:

$("#x > div") 

jako selektor - będzie wybrać tylko bezpośrednie dzieci z div którego identyfikator jest x.

+0

Cześć kolego, powiedziałem, nie mogę użyć $ („# x”), ponieważ jest to wtyczka, a $ ("# x") może być dowolnym typem selektora, może to być $ ("*"). Należy to zrobić za pomocą $ (selector, jqueryobj) dzięki. –

+0

@Rodrigo: Odpowiedź jest nadal '>'. Możesz go używać na inne sposoby, takie jak '$ ('> div', jqueryobj)' –

1

Metoda ta daje cały tekst wewnętrznej div:

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

Jeśli nie chcesz wszystko tekst w połączeniu z wieloma div dzieci, można uzyskać dostęp jedynie bezpośredni węzeł tekstowy od siebie:

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

Uwaga: przy założeniu x jest elementem Jquery określa var x = $('#x').

+0

+1 - To też zadziała –