digamos que eu tenha uma marcação como esta:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
e quero selecionar #moo.
porque $('#foo').find('span')
funciona, mas $('span', $('#foo'));
não funciona?
digamos que eu tenha uma marcação como esta:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
e quero selecionar #moo.
porque $('#foo').find('span')
funciona, mas $('span', $('#foo'));
não funciona?
var ele = $("div #foo")
como você pode obter o moo a partir daqui (sem usar referências de array)
Respostas:
Você pode usar qualquer um destes [começando pelo mais rápido]
$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")
Na verdade, $ ('# id', this); selecionaria #id em qualquer nível descendente, não apenas o filho imediato. Em vez disso, tente isto:
$(this).children('#id');
ou
$("#foo > #moo")
ou
$("#foo > span")
moo
, não a classe.
.children()
e .find()
são semelhantes, exceto que o primeiro viaja apenas um nível abaixo da subárvore DOM.
Você pode usar a find
opção de selecionar um elemento dentro de outro. Por exemplo, para encontrar um elemento com id txtName em um div específico, você pode usar como
var name = $('#div1').find('#txtName').val();
.... mas $ ('span', $ ('# foo')); não funciona?
Este método é chamado de fornecer contexto do seletor .
Nele, você fornece um segundo argumento para o seletor jQuery . Pode ser qualquer string de objeto css exatamente como você passaria para seleção direta ou um elemento jQuery.
por exemplo.
$("span",".cont1").css("background", '#F00');
A linha acima selecionará todos os spans dentro do container que possui a classe nomeada cont1
.
ambos parecem estar funcionando.
veja violino: http://jsfiddle.net/maniator/PSxkS/
$('#moo')
? ;) Btw. funciona: jsfiddle.net/fkling/k5X2r