digamos que tengo un marcado como este:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
y quiero seleccionar #moo.
¿Por qué $('#foo').find('span')
funciona, pero $('span', $('#foo'));
no?
digamos que tengo un marcado como este:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
y quiero seleccionar #moo.
¿Por qué $('#foo').find('span')
funciona, pero $('span', $('#foo'));
no?
var ele = $("div #foo")
cómo puede llegar a moo desde aquí (sin usar referencias de matriz)?
Respuestas:
Puede utilizar cualquiera de estos [empezando por el más rápido]
$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")
En realidad, $ ('# id', this); seleccionaría #id en cualquier nivel descendiente, no solo el hijo inmediato. Prueba esto en su lugar:
$(this).children('#id');
o
$("#foo > #moo")
o
$("#foo > span")
moo
, no la clase.
.children()
, y .find()
son similares excepto que los antiguos recorridos sólo un nivel abajo del DOM sub-árbol.
Puede usar la find
opción para seleccionar un elemento dentro de otro. Por ejemplo, para encontrar un elemento con id txtName en un div particular, puede usar like
var name = $('#div1').find('#txtName').val();
.... pero $ ('intervalo', $ ('# foo')); no funciona?
Este método se llama para proporcionar contexto de selector .
En esto, proporciona un segundo argumento al selector de jQuery . Puede ser cualquier cadena de objeto css como pasaría para la selección directa o un elemento jQuery.
p.ej.
$("span",".cont1").css("background", '#F00');
La línea anterior seleccionará todos los tramos dentro del contenedor que tiene la clase nombrada cont1
.
ambos parecen estar funcionando.
ver violín: http://jsfiddle.net/maniator/PSxkS/
$('#moo')
? ;) Por cierto. funciona: jsfiddle.net/fkling/k5X2r