2010-08-23 17 views
9

this değişkenine sahip bir jquery nesnesine başvurum var. Çocuk seçiciyi nesneye uygulamanın bir yolunu arıyorum.Göreceli bir jQuery seçici gibi bir şey var mı?

$(this).find('table > tbody > tr > td') kullanıyorum, ama amacım $('[Value of $(this) goes here somehow] > table > tbody > tr > td') gibi bir şeydir.

$(this).children('table').children('tbody').children('tr').children('td')'u yapabileceğimin farkındayım, ama burada kullanabileceğim bazı sözdizimsel şekerlerin olup olmadığını merak ediyordum. Böyle yanı .find() kullanırken

cevap

19

Bir child selector (>) ile başlatabilirsiniz:

$(this).find('> table > tbody > tr > td') 

Bir çoğu zaman göz ardı kullanım durumu, ama sonra ne konum için sadece iyi çalışıyor.

$('> table > tbody > tr > td', this) 

// Is the equivalent of 
$(this).find('> table > tbody > tr > td') 
+0

Neden bunu düşünmedim _i_ değil mi? – Eric

+0

Gerçekten de>> selektörünü önündeki hiçbir şey olmadan kullanabilirsiniz? * Scratch head * Bu kesinlikle geçerli bir CSS değildir ve API sayfalarında bahsedilmediğini görmüyorum ... Hmmmm ... şimdi bir deneme yapacak –

+0

@Yi Jiang: Bunun gibi bir şey CSS'de anlamsız çünkü bağlam yok. JavaScript/jQuery seçicilerinde daha mantıklı. –

6

Nick find() kullanabilir veya selector context kullanabilir, bahsedilen zamanda.

Varsayılan olarak, selektörler aramalarını belge kökünde başlayarak DOM içinde gerçekleştirir. Ancak, alternatif bir bağlam için isteğe bağlı ikinci parametreyi $() işlevini kullanarak arama yapılabilir.

$("div.foo").click(function() { 
    $("span", this).addClass("bar"); 
}); 
+0

Bu * * .find() ', sadece oraya ulaşmak için daha fazla/ek adımlar var :) –

+0

@Nick: evet, ama fark göz ardı edilebilir ve ben 5 veya 6 karakter daha kısa söz değil, daha temiz görünüyor düşünüyorum;) –

+0

@Andy - İşte bu fark, gerçekten ekleyebilir, kod yoluna bir göz atabilir: http://github.com/jquery/jquery/blob/master/src/core.js#L62 ile. find() 'yaparsın 1' if() 'kontrol et (' '' (bu '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '], sonra z $ (selektör, bu) format biçiminde 7'lik()' ve Aynı yere ulaşmak için 2 regex ... eğer gerçekten döngü iseniz bu ekleyebilirsiniz. Dönmüyorsanız katılıyorum, ancak bu biraz çalıştığında performans bir faktördür. –

4

alternatif bir yol, arama için bir bağlamını tanımlayan ikinci bir parametre $('selector', context), geçen olması:

İlgili konular