2009-08-11 17 views
5

mi htmljQuery pregunta Sub Selector

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

mi llamada

tengo este elemento que puede ser cualquier selector de jQuery, 1 o más elementos:

var x = $("#x"); 

Ahora necesito (esto es un complemento que descubrirá elementos internos como pestañas) para navegar solo a través de los primeros elementos DIV y no sus cadenas secundarias. Estoy intentando ...

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

muestra: 1. un texto textother 2. 3. otro texto solo texto

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

muestra: 1. solo texto 2. algunos textother text

esto es lo más aproximado, pero lo necesito en el orden correcto. cualquier sugerencia ? gracias

ps. porque es un complemento, no puedo hacer esto.

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

Necesito hacer esto

#(newselector, x) 

Respuesta

10

Si no puede utilizar $("#x > div") porque debe trabajar con todos los selectores que piensas de entonces suponiendo que ha definido que el selector específico para var x:

var x = $('#x'); 

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

Esto es lo que necesito. Gracias. Nunca vi $(). Niños antes. –

1

Uso:

$("#x > div") 

como su selectora - sólo seleccionará los hijos directos de la div cuyo ID es x.

+0

Hola amigo, me dijo que no puedo utilizar $ ("# x") porque este es un complemento y $ ("# x") puede ser cualquier tipo de selector, puede ser $ ("*"). Se debe hacer con $ (selector, jqueryobj) gracias. –

+0

@Rodrigo: La respuesta es '' '. Puede usarlo de otras formas como '$ ('> div', jqueryobj)' –

1

Este método le dará el todo el texto interno de un div:

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

Si no quieren todo el texto combinado de varias Div niño, se podía acceder sólo el nodo de texto directa de cada uno:

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

Nota: suponiendo x es un elemento Jquery definido por var x = $('#x').

+0

+1 - Esto funcionará también –