2012-03-29 2 views
104

가능한 중복 :
How to select html nodes by ID with jquery when the id contains a dot?jQuery 점이 ID 선택기에 있습니까?

나는이와 유사한 요소가 포함 된 웹 사이트를 가지고 : 나는 $('#root.SomeCoolThing') 같은 jQuery로 단락을 선택할 수 없습니다

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

를 jQuery를하기 때문에 생각해, SomeCoolThingid="root" 인 요소의 클래스입니다.

어떻게이 요소를 jQuery와 함께 선택할 수 있습니까? 다음과 같이

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

이 비록 두 개의 '\\\'가있는 솔루션입니다. 왜 이드의 내부에 점을 넣었습니까? – gdoron

+0

글쎄, 웹 사이트가 나 한테서 만들어진 게 아니야. 나는 ID 이름을 좋아하지도 않는다. 보다 정확하게는 API 문서입니다. –

답변

194

jQuery selectors API에서 탈출 규칙을 사용하십시오 docs에서

$('#root\\.SomeCoolThing') 

:

이 중 하나를 사용하려면이이 같은 구성을 피하기 위해 같은 것 이름의 리터럴 부분으로 메타 문자 (예 : !"#$%&'()*+,./:;<=>[email protected][\]^`{|}~)는이어야합니다.두 개의 백 슬래시 인 \\으로 이스케이프 처리하십시오. 예를 들어 id="foo.bar" 인 요소는 선택기 $("#foo\\.bar")을 사용할 수 있습니다.

+1

아, 알겠습니다. 작동하지 않는 단일 백 슬래시를 사용하여 시도했습니다. 고맙습니다! –

+0

나는 $ ('# root \\. SomeCoolThing')을 시도했다. 그러나 큰 따옴표로 $ ("# root \\. SomeCoolThing")을 시도하면 작동하지 않습니다. jQuery에서 작은 따옴표와 큰 따옴표의 차이점에 대해 알고 계십니까? –

+0

@keweishang 따옴표 형식이 동일하지 않는 한 차이를 만들 수 없습니다. – charlietfl

3

같은 것을 사용 기간을 탈출,하지만 당신은 요소의 ID를 변경할 수없는 경우,이 셀렉터를 사용하여 시도 할 수 있습니다 :

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

attr 사용 :

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

'한 줄자'는 때때로 유용하지 않습니다. 간단한 진술을 넘어서는 생각을 설명하십시오 ... – nickhar

+2

이것은 jQuery의 불필요한 부분에 대한 추가 처리이기도합니다. 실제로 수행해야 할 작업은 모두 "." 문자 ... – Ian

+5

@ 이안. 미리 ID를 모르는 경우에 유용합니다. json 객체에서 가져올 변수 일 수 있습니다. –

3

를 사용하여 두 개의 백 슬래시

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

당신은 특수 문자 탈출해야하는 각 특수 문자 앞에 : 당신이 중 하나를 사용하려면

$('#root\\.SomeCoolThing') 

docs:

을 메타 문자 (예 : ! "# $ % & '() * +,./:; < =>? @ [] ^`{|} ~)을 이름의 리터럴 부분으로 사용하려면 두 개의 백 슬래시로 문자를 이스케이프 처리해야합니다. 예를 들어 id = "foo.bar"인 요소가있는 경우$ ("# foo \\. bar")를 사용할 수 있습니다.

관련 문제