diciamo che ho un markup come questo:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
e voglio selezionare #moo.
perché $('#foo').find('span')funziona, ma $('span', $('#foo'));non lo fa?
diciamo che ho un markup come questo:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
e voglio selezionare #moo.
perché $('#foo').find('span')funziona, ma $('span', $('#foo'));non lo fa?
var ele = $("div #foo")come puoi arrivare a moo da qui (senza usare riferimenti ad array)
Risposte:
In realtà, $ ('# id', this); selezionerebbe #id a qualsiasi livello discendente, non solo al figlio immediato. Prova questo invece:
$(this).children('#id');
o
$("#foo > #moo")
o
$("#foo > span")
moo , non la classe.
.children()e .find()sono simili tranne per il fatto che il primo viaggia solo un livello più in basso nel sottoalbero DOM.
Perché non usare semplicemente:
$("#foo span")
o
$("#foo > span")
$('span', $('#foo')); funziona bene sulla mia macchina;)
$($(elementA), 'tr#' + key + ' span')non funziona per me (jQuery 1.10.2)
È possibile utilizzare l' findopzione per selezionare un elemento all'interno di un altro. Ad esempio, per trovare un elemento con id txtName in un particolare div, puoi usare like
var name = $('#div1').find('#txtName').val();
.... ma $ ('span', $ ('# foo')); non funziona?
Questo metodo viene chiamato per fornire il contesto del selettore .
In questo fornisci un secondo argomento al selettore jQuery . Può essere qualsiasi stringa di oggetto CSS, proprio come si passerebbe per la selezione diretta o un elemento jQuery.
per esempio.
$("span",".cont1").css("background", '#F00');
La riga sopra selezionerà tutti gli intervalli all'interno del contenitore con la classe denominata cont1.
entrambi sembrano funzionare.
vedi violino: http://jsfiddle.net/maniator/PSxkS/
$('#moo')? ;) Btw. funziona: jsfiddle.net/fkling/k5X2r