1

이름을 기반으로 DOM 요소를 검색하려고합니다. 불행히도 그들의 이름은 중괄호 {} 안에 있습니다.HTML 이름 속성의 중괄호

jQuery (1.6.4)는 문제없이 검색 할 수 있습니다. 그러나이 시점에서 이러한 호출을 getElementsByName()으로 바꾸려고 시도하고 있지만 gEBN은 쿼리 문자열에 중괄호가있는 것과 일치하지 않습니다. 백 슬래시를 한 번 두 번 이스케이프 처리하여 사용하지 않으려 고 시도했습니다.

중괄호 사용 규칙을 변경하지 않고이 작업을 수행 할 수있는 방법이 있습니까?

It also looks like attr에 허용되는 문자 집합에 포함되어 있지 않습니다.

업데이트 : Chrome에서는 작동하지만 Windows 용 Safari에서는 작동하지 않는 것으로 보입니다. 그러나 실제로 이상한 점은 Windows 용 사파리조차도 이러한 문제를 잘 처리한다는 것입니다. 당신이 selectors에 jQuery를 문서 페이지를 읽는다면

+0

이것이 작동하는 것 같습니다. http://jsfiddle.net/sachinyadav/p7bNZ/ – Sachin

+0

이 피들을 어떻게 보았는지 확실하지 않습니다. http://jsfiddle.net/x7Xe5/ – PSL

+0

젠장. 이런 식으로 보이는 것은 비생산적이지 않은 경우 더 많은 테스트가 필요하다는 것을 의미합니다. –

답변

2

, 당신이 볼 수 있습니다!

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

+0

OP는 그가 탈출을 시도했다고 언급했습니다. – EmmyS

+0

그럼, 문제의 데모가 순서대로 맞춰진 것 같습니다 : P – Mottie

+0

질문은 (이미 작동중인) jQuery 라우트를 명시 적으로 피하는 네이티브 JS 솔루션에 관한 것입니다. 하지만 그래. 저는 지금 프레임의 3 개 층 안에있는 페이지를 가지고 매우 특별한 경우를 제외하고는 실제로 그것을 재현 할 수 없습니다. –

1

명시 적으로 무엇을 해야할지를 결정할 때 "이상한"결과가 예상됩니다. 전자 표준은 허용합니다. 예약을하길 선택하면 스스로 해결할 수 있습니다. 일부 브라우저는 작동하고 일부 브라우저는 작동하지 않습니다. 이전에 사용했던 것들은 새 버전이 나왔을 때 경고없이 중단됩니다.

그래서 당신이하려는 일에 달려 있습니다. 자신이나 소규모 팀을 위해 무언가를 만들면 괜찮을 것입니다. 일반 시청자를 위해 무언가를 만드는 경우 표준에 충실하고 허용되지 않는 문자는 사용하지 않는 것이 좋습니다.