2011-04-27 17 views
57

Digamos que tengo un margen de beneficio como esto:jQuery - seleccionar elementos del interior de un elemento

<div id="foo"> 
    ... 
    <span id="moo"> 
    ... 
    </span> 
    ... 
</div> 

y quiero seleccionar #moo.

¿Por qué $('#foo').find('span') funciona, pero $('span', $('#foo')); no?

+10

Por qué no '$ ('# moo')'? ;) Por cierto. funciona: http://jsfiddle.net/fkling/k5X2r/ –

+0

O '$ ('# foo span')' ;-) – Capsule

+0

No sé por qué, pero la función que engancho al tramo seleccionado se aplica a todos se extiende en la página, no solo en el interior #foo :( – Alex

Respuesta

90

Puede utilizar cualquiera éstos [a partir de las más rápidas]

$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo") 

Take a look

+1

Creo que el tercero debe ser span # moo no span # foo? – xr280xr

+0

Yup .. He hecho la c orrection –

34

En realidad, $ ('# id', this); seleccionaría #id en cualquier nivel de descendiente, no solo el hijo inmediato. Tal vez puedas probar:

$(this).children('#id'); 

o

$("#foo > #moo") 

o

$("#foo > span") 
+0

Eso no seleccionará nada porque el elemento tiene ** ID ** 'moo', no la clase. –

+0

Vale la pena señalar que' .children() 'and'. find() 'son similares excepto que el primero viaja solo un nivel por el subárbol DOM. – Kevin

8

Por qué no utilizar:

$("#foo span") 

o

$("#foo > span") 

$('span', $('#foo')); funciona bien en mi máquina;)

+0

' $ ($ (elementoA), 'tr #' + tecla + 'span') 'no funciona para mí (jQuery 1.10 .2) – Cody

6

un vistazo aquí - para consultar un subelemento de un elemento:

$(document.getElementById('parentid')).find('div#' + divID + ' span.child');

1

Puede usar la opción find para seleccionar un elemento dentro de otro. Por ejemplo, para encontrar un elemento con id txtName en un div en particular, se puede utilizar como

var name = $('#div1').find('#txtName').val(); 
Cuestiones relacionadas