jQuery - bir elemanın içinden eleman seçme


95

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?


10
Neden olmasın $('#moo')? ;) Btw. işe yarıyor: jsfiddle.net/fkling/k5X2r
Felix Kling

Nedenini bilmiyorum ama seçilen aralığa bağladığım işlev yalnızca #foo içindeki değil, sayfadaki tüm açıklıklara uygulanıyor :(
Alex

2
Öğeyi bir var içinde zaten seçmiş olduğunuzda, örneğin var ele = $("div #foo")buradan
moo'ya

Yanıtlar:


130

Bunlardan herhangi birini kullanabilirsiniz [en hızlıdan başlayarak]

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

Bir göz at


1
Bence üçüncüsü span # moo değil span # foo?
xr280xr

60

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")

Eleman vardır çünkü hiçbir şey seçmek olmaz kimliğini moo değil, sınıfı.
Felix Kling

4
Bunu belirtmekte fayda var .children()ve .find()benzerler, ancak eski DOM alt ağacında yalnızca bir seviye aşağı gidiyor.
Kevin

10

Neden sadece kullanmıyorsunuz:

$("#foo span")

veya

$("#foo > span")

$('span', $('#foo')); makinemde iyi çalışıyor;)


$($(elementA), 'tr#' + key + ' span')benim için çalışmıyor (jQuery 1.10.2)
Cody

9

findDiğ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();

6

Buraya bir göz atın - bir elemanın bir alt elemanını sorgulamak için :

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


3

.... 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.

DEMO


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.