2012-03-29 16 views
104

Powiel możliwe:
How to select html nodes by ID with jquery when the id contains a dot?jQuery dot w selektorze ID?

Mam stronę internetową, która zawiera elementy podobne do tego:

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

nie mogę wybrać paragraf z jQuery jak $('#root.SomeCoolThing') ponieważ jQuery myśli, SomeCoolThing jest klasą elementu z id="root".

Jak wybrać ten element za pomocą jQuery? Chciałbym uniknąć budowy takiego:

$(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

Choć nie jest rozwiązaniem z podwójnym '\\\'. Po co umieszczać kropkę w id? – gdoron

+0

Cóż, strona internetowa nie jest zrobiona ode mnie. Nie podoba mi się też nazwisk. Jest to dokładniej dokumentacja API. –

Odpowiedz

194

Użyj reguł ucieczką od jQuery selectors API następująco:

$('#root\\.SomeCoolThing') 

Z docs:

użycie dowolnego z meta-znaki (takie jak !"#$%&'()*+,./:;<=>[email protected][\]^`{|}~) jako dosłowna część nazwy, musi ona być ewakuowane z dwoma tylnymi ukośnikami: \\. Na przykład element z id="foo.bar" może używać selektora $("#foo\\.bar").

+1

Ah, rozumiem. Próbowałem go za pomocą pojedynczego ukośnika odwrotnego, który nie działał. Dziękuję Ci! –

+0

Próbowałem $ ("# root \\. SomeCoolThing"), to działa. Ale kiedy próbuję $ ("# root \\. SomeCoolThing") z podwójnymi cudzysłowami, to nie zadziałało. Czy masz pojęcie o różnicy między cudzysłowami i podwójnymi cudzysłowami w jQuery? –

+0

@keweishang rodzaj cytatów nie powinien mieć znaczenia, o ile są one takie same – charlietfl

3

strzelanie z biodra tutaj, ale jeśli nie można zmienić identyfikator elementu, spróbuj użyć tego przełącznika:

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

Korzystanie z attr działa:

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

"One-liners" czasami nie są wystarczająco przydatne. Wyjaśnij swoje myślenie poza prostym stwierdzeniem ... – nickhar

+2

Jest to również bardzo dodatkowe przetwarzanie ze strony jQuery, które jest niepotrzebne, gdzie wszystko, co naprawdę musisz zrobić, to uciec przed "." postać ... – Ian

+5

@Ian. Jest to przydatne, gdy wcześniej nie znasz identyfikatora. Może to być zmienna uzyskana z obiektu json. –

3

Zastosowanie dwa ukośniki przed każdym szczególnym charakterze

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

musisz uciec znaki specjalne:

$('#root\\.SomeCoolThing') 

docs:

Jeśli chcesz użyć dowolnego z meta-znaki (takie jak ! "# $% & '() * +,./:; < =>? @ []^`{|} ~) jako dosłowna część nazwy, musisz uciec z postaci dwoma tylnymi ukośnikami: \\. Na przykład, jeśli masz element z id = "foo.bar", możesz użyć selektora $ ("# foo \\. Bar").

Powiązane problemy