2011-11-11 21 views
18

Şu anda bazı kod üstlenmeden ve bir selektör rastlamak: Bu sayfadaki kullanıcı kontrolünden <tr> 's seçerek oluyor gibi görünüyorVirgülle ayrılmış liste listesi?

jQuery("tr","#ctl00_MainContent_MyUserControl").each(function(i,row) { ... } 

(örneğin tam olarak adlandırılır gerçeğini göz ardı !) fakat bu benim bildiğim bir sözdizimi değil ve belgelerinde hiçbir şey bulamıyor. Bunun yazılacak beklersiniz: Burada kaçırıyorum (ince veya başka türlü) bir fark varsa

$("#ctl00_MainContent_MyUserControl tr").each(function(i,row) { ... } 

kimse bana söyleyebilir ??

+0

İlk söz dizimi, içeriğin önbelleğe alındığı ve bununla ilgili hızlı sorgular yapmak istediğinizde kullanışlıdır. Ancak, cevaplardan birinde belirtildiği gibi, avro $ ('# ...') .find ('tr'). Önbelleğe alma önemli değilse ikinci sözdizimi okunabilirlik açısından önerilir. Bir şeyi önbelleğe aldığınızda hafızaya geçeceğini, bazen de yükün buna değmeyeceğini unutmayın. – AlexStack

cevap

16

This selector, ctl00_MainContent_MyUserControl numaralı bir öğenin içindeki tüm tr öğelerini seçer. İkinci örneğinizle tamamen aynı.

İkinci parametre, ilk parametre için bir bağlam sağlar. Daha iyi kullanım durumları örneğin, bu sözdizimi için vardır:

function(el) { 
    $('tr', el).each(...); 
} 

el sayfanızda bazı elementtir yere. Bu durumda, ikinci sözdizimi formunu kullanamazsınız.

+0

Bu, $ (el) .find ('tr') 'ile aynı mıdır? Eğer öyleyse, hangisi daha iyi bir fikir? – ksav

2

jQuery yapıcısının ikinci bağımsız değişkeni (ilk seçici olduğunda) içeriği'dur. API docs

bağlam itibaren

Bir DOM Eleman, Belge veya jQuery

O aynısı http://api.jquery.com/jQuery/

3

Bkz bağlam olarak kullanmak. Aynı zamanda yazılmış olabilir: eski sözdizimi jQuery constructor documentation görülebilir

$("#ctl00_MainContent_MyUserControl").find("tr").each(function(i,row) { ... } 

. Temelde "birinci seçici ile eşleşen tüm elemanları bul, bu ikincisinin eşleştirdiği ikinci bir soyundan geliyor".

12

iki bağımsız (selector ve context) is equivalent tojQuery(context).find(selector) ile jQuery() yöntemini çağırma. Böylece: Ayrıca aynı olur

jQuery("#ctl00_MainContent_MyUserControl").find("tr"); 

:

jQuery("tr","#ctl00_MainContent_MyUserControl"); 

eşittir

jQuery("#ctl00_MainContent_MyUserControl tr"); 

Benim kişisel görüşü olduğunu context kullanımı sadece zaten seçilmiş olan bir elemanı () geçirdiğinizde anlamlıdırveya DOM), sadece bir selektörü (String) geçtiğinizde çok fazla değil. Bu durumda sadece CSS seçiciyi taklit etmeyi tercih ederim: ör. #ctl00_MainContent_MyUserControl tr.

İlgili konular