2010-11-22 19 views
4

İçinde kimliği '/' olan DOM öğeleri var. öyle olsa -'id' üzerinde arama '/' + jquery'yi içeren

jQuery('#activities/_terp_count') //returns null 
+5

Kimlik nitelikleri eğik çizgi içeremez. Şaşırtıcı değil ki jQuery, bu tür öğeleri bulmakta zorlanıyor. Bununla birlikte, bu öğeyle o kimliği elde etmenin bir yolu olabilir. Ayrıca, "bu kimliğe sahip tüm öğeler" Sadece bu tür bir öğeye sahip olmanız gerektiğini unutmayın. – BoltClock

+3

Bir "id" "bir harfle başlamalıdır ([A-Za-z]) ve herhangi bir sayıdaki harf, rakam ([0-9]), kısa çizgiler (" - "), alt çizgi (" _ "), iki nokta üst üste (": ") ve noktalardan (". ")." '/' Geçersiz bir karakterdir. – kennytm

+1

Lütfen bakınız: http://stackoverflow.com/questions/70579/what-is-a-valid-value-for-id-attributes-in-html – Kevin

cevap

4

jQuery('[id=activities/_terp_count]') onu şüphesiz (http://jsfiddle.net/jXsvA/ örnek) bulabilirsiniz gerektiğini

jQuery('[id=activities/_terp_count]') //returns null 

Not: Ben Ex için id sahip tüm unsurları ihtiyaç olarak, format aşağıdaki kullanmak istiyorum ID ile doğrudan aramadan daha yavaş olacak. Eğer seçiciyi jQuery('div[id*=activities/_terp_count]') gibi bir şekilde sınırlandırabiliyorsanız, daha hızlı olacaktır, eğer etiketlerin her zaman olduğunu biliyorsanız. Eğer / işareti kaçış eğer

+0

Çözümünüz benim için faydalı oldu , ancak içinde tırnak işaretleri ('id'): jQuery ('[id = "activities/_terp_count"]') '. Onsuz bir 'Syntax hatası, tanınmayan ifade… 'var. –

7

(gerçi, / olarak bildiğim kadarıyla, jQuery veya CSS'de bir mekansal anlama sahip değildir) Yukarıdaki çözüm benim için çalışır, ancak bir öğenin kimliğine göre yerel bir yöntem almanın avantajları olduğuna dikkat edin: yani, document.getElementById ('strin/g'), jQuery'nin ("strin/g") olduğu durumlarda burada çalışır ") başarısız olur (jQuery özel muamele olmadan"/"üzerinde boğucu bir belirteci kullanır çünkü). jQuery o elemanın sürümünü sarılı almak için: her zaman kontrol edemezsen, Aslında

jQuery(document.getElementById('activities/_terp_count')); 

tam olarak ne diyelim (gerçek kimliği girecek var bir eleman ile bir sayfada arama yapmak için çalışıyorsanız url #hash içinde belirtilen bir şeyin kimliği, a) dikkatli olun, çünkü bu tehlikeli olabilir ve b) not jQuery (document.getElementById (window.location.has.replace ("#", ")))); jQuery ("#" + window.location.has.replace ("#", "'))' den çok daha güvenilir çalışır. çünkü kolayca kırılmaz.

Örnek: kullanıcılar sadece belirli url parametresi veya karma girerek kodu kırmak için muktedir istemiyorsanız

jQuery(document.getElementById("_=_")) //<--- null, or the actual element, if you have one which said crazy, non-compliant id 

jQuery("#_=_") //<--Uncaught Error: Syntax error, unrecognized expression: #_=_ 

, eğer yapabilirsen kullanan durum önlemek ve eğer yapamaz, yerel ID öğesini kullanın.

+1

Bu en basit çözüm ve en mantıklı olanıdır. Neden [kaçıyor] (http: //learn.jquery.com/using-jquery-core/faq/nasıl-it-i-select-an-element-by-bir-kimlik-o-karakterleri-kullanılan-css-notasyonu /) (her zaman hatalara eğilimli olan) beklenmedik durumlarda, bu özelliklerin yerel javascript yöntemlerinden yararlanabileceği durumlarda. – thebugfinder