2012-03-29 19 views
104

Olası Çoğalt:
How to select html nodes by ID with jquery when the id contains a dot?jQuery nokta?

Ben buna benzer unsurları içeren bir web sitesi var: Ben $('#root.SomeCoolThing') gibi jQuery ile paragraf seçemezsiniz

<p id="root.SomeCoolThing">Some Cool Thing</p> 

jQuery çünkü düşünür, SomeCoolThing, id="root" ile bir öğenin sınıfını oluşturur.

Bu öğeyi jQuery ile nasıl seçebilirim? aşağıdaki gibi

$(document.getElementById('root.SomeCoolThing')) 
+0

http://stackoverflow.com/questions/605630/how-to-select-html-nodes-by-id-with-jquery-when-the-id-contains-a-dot – David

+0

orada olsa çift ​​'' ile bir çözümdür. Neden kimliğin içine bir nokta koyalım? – gdoron

+0

Eh, web sitesi benden yapılmadı. Ben de kimlik isimlerini sevmiyorum. Daha doğrusu bir API belgesidir. –

cevap

194

jQuery selectors API kaçan kuralları kullanın: docs itibaren

$('#root\\.SomeCoolThing') 

:

herhangi birini kullanmak için böyle bir yapıya kaçınmak istiyor meta-karakterleri ( !"#$%&'()*+,./:;<=>[email protected][\]^`{|}~ gibi) bir adın birebir kısmı olarak,olmalıdıriki ters eğik çizgi ile birlikte kaçtı: \\. Örneğin, id="foo.bar" numaralı bir eleman seçiciyi $("#foo\\.bar") kullanabilir.

+1

Ah, anlıyorum. Çalışmayan tek bir ters eğik çizgi kullanarak çalıştı. Teşekkür ederim! –

+0

$ ('# root \\. SomeCoolThing') çalıştım, işe yarıyor. Ama ben çift tırnak ile $ ("# root \\. SomeCoolThing") deneyin, işe yaramadı. JQuery'de tek tırnak ve çift tırnak arasındaki fark hakkında herhangi bir fikriniz var mı? –

+0

Keweishang tırnak türü aynı oldukları sürece bir fark yaratmamalıdır – charlietfl

3

gibi bir şey kullanarak dönemini kaçmak, ancak öğenin kimliğini değiştiremezsiniz, bu seçici kullanılarak deneyebilirsiniz:

$("p[id=root.SomeCoolThing]") 
29

Attr kullanımı:

$('p[id="root.SomeCoolThing"]') 
+2

'Tek linerler' bazen yeterince yararlı değildir. Düşüncelerinizi basit bir ifadenin ötesinde açıklayın ... – nickhar

+2

Bu, jQuery'nin gereksiz yere yapılması gereken çok fazla işlemdir ve gerçekten yapmanız gereken tek şey "." karakter ... – Ian

+5

@Ian. Kimliği önceden bilmediğinizde kullanışlıdır. Bir json nesnesinden aldığınız bir değişken olabilir. –

3

Kullanım iki ters

$('#root\\.SomeCoolThing') 
14

Sen özel karakter kaçmak için gereken her özel karakterden önce: Eğer herhangi birini kullanmak isterseniz

$('#root\\.SomeCoolThing') 

docs:

meta-karakterler (! "# $% 01 gibi'() * +,./:; < =>? @ []^`{|} ~), bir ismin basit bir parçası olarak, karakterden iki ters eğik çizgi ile kaçmanız gerekir: \\. Örneğin, kimlik = "foo.bar", ile bir öğeniz varsa, seçiciyi $ ("# foo \\. Bar") kullanabilirsiniz.