Development Tip

ID에 대괄호가 포함 된 경우 ID로 DOM 요소를 찾으시겠습니까?

yourdevel 2020. 10. 26. 21:26
반응형

ID에 대괄호가 포함 된 경우 ID로 DOM 요소를 찾으시겠습니까?


다음과 유사한 ID를 가진 DOM 요소가 있습니다.

something[500]

Ruby on Rails 애플리케이션에 의해 구축되었습니다. 이 요소를 jQuery를 통해 가져올 수 있어야 DOM 위로 이동하여 사전에 액세스 할 수없는 변수 ID가있는 부모의 부모를 삭제할 수 있습니다.

내가 어떻게 할 수 있는지 아는 사람이 있습니까? 다음 코드가 작동하지 않는 것 같습니다.

alert($("#something["+id+"]").parent().parent().attr("id"));

추가 검사시 다음 사항이 적용됩니다.

$("#something["+id+"]")

객체를 반환하지만 ".html ()"또는 ".text ()"를 실행하면 결과는 항상 null이거나 빈 문자열입니다.


속성 선택 자로 간주되지 않도록 대괄호를 이스케이프해야합니다. 이 시도:

alert($("#something\\["+id+"\\]").parent().parent().attr("id"));

선택기의 특수 문자 , 특히 두 번째 단락을 참조하십시오 .

메타 문자 (예 !"#$%&'()*+,./:;<=>?@[\]^``{|}~:)를 이름의 리터럴 부분으로 사용하려면 두 개의 백 슬래시를 사용하여 이스케이프해야합니다 \\.. 예를 id="foo.bar"들어가 있는 요소 는 선택기를 사용할 수 있습니다 $("#foo\\.bar"). W3C CSS 사양에는 유효한 CSS 선택자와 관련된 전체 규칙 집합이 포함되어 있습니다 . 또한 식별자 에 대한 CSS 문자 이스케이프 시퀀스에 대한 Mathias Bynens의 블로그 항목도 유용합니다 .


ID 대괄호를 포함 할 수 없습니다 . 그것은되는 사양에 의해 금지 .

일부 브라우저는 오류를 수정하고 대처할 수 있지만 잘못된 데이터를 처리하는 대신 데이터를 수정해야합니다.


대괄호는 속성 필터 인 jQuery 선택자 에게 특별한 의미가 있습니다.

이것들을 벗어나면 당신의 요소가 잘 될 것입니다.

$( "#something\\[" + id + "\\]" )

당신은 또한 할 수 있습니다

$('[id="something['+id+']"]')

이 시도:

alert($("#something\\["+id+"\\]").parent()[0].parent()[0].attr("id"));

당신은 그들을 사용하여 탈출 \\하거나 다음과 같이 할 수 있습니다 ...

$(document.getElementById("something[" + id + "]"))

"모든 메타 문자

!"#$%&'()*+,./:;<=>?@[\]^`{|}~

이름의 리터럴 부분으로서 두 개의 백 슬래시 ()로 이스케이프되어야합니다 \\.

예를 들어 id = "foo.bar"인 요소는 선택기를 사용할 수 있습니다.

$("#foo\\.bar")

"[source : jquery doc ] 및 id ="foo [bar] "요소 (W3C에는 유효하지 않지만 JQuery에서 인식됨)는 선택기를 사용할 수 있습니다.

$("#foo\\[bar\\]")

(다른 많은 사람들과 마찬가지로 asnwer이지만 모두 함께 :))

참고 URL : https://stackoverflow.com/questions/1239095/find-dom-element-by-id-when-id-contains-square-brackets

반응형