diyelim ki böyle bir işaretim var:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
ve #moo'yu seçmek istiyorum.
neden $('#foo').find('span')
çalışıyor ama $('span', $('#foo'));
çalışmıyor?
diyelim ki böyle bir işaretim var:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
ve #moo'yu seçmek istiyorum.
neden $('#foo').find('span')
çalışıyor ama $('span', $('#foo'));
çalışmıyor?
var ele = $("div #foo")
buradan
Yanıtlar:
Bunlardan herhangi birini kullanabilirsiniz [en hızlıdan başlayarak]
$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")
Aslında, $ ('# id', bu); #id'i yalnızca alt düzeydeki çocuk düzeyinde değil, herhangi bir alt düzeyde seçer. Bunun yerine şunu deneyin:
$(this).children('#id');
veya
$("#foo > #moo")
veya
$("#foo > span")
moo
değil, sınıfı.
.children()
ve .find()
benzerler, ancak eski DOM alt ağacında yalnızca bir seviye aşağı gidiyor.
find
Diğerinin içindeki bir öğeyi seçmek için seçeneği kullanabilirsiniz . Örneğin, belirli bir div'de txtName kimliğine sahip bir öğe bulmak için ,
var name = $('#div1').find('#txtName').val();
.... ama $ ('span', $ ('# foo')); çalışmıyor mu?
Bu yöntem, seçici bağlamı sağlamak olarak adlandırılır .
Bu size jQuery seçicinin için ikinci argüman sağlamak . Doğrudan seçim veya bir jQuery öğesi için ilettiğiniz gibi herhangi bir css nesnesi dizesi olabilir.
Örneğin.
$("span",".cont1").css("background", '#F00');
Yukarıdaki satır, adlandırılmış sınıfa sahip kapsayıcı içindeki tüm aralıkları seçecektir cont1
.
ikisi de çalışıyor gibi görünüyor.
fiddle'a bakın: http://jsfiddle.net/maniator/PSxkS/
$('#moo')
? ;) Btw. işe yarıyor: jsfiddle.net/fkling/k5X2r