ID에 대괄호가 포함된 경우 ID로 DOM 요소를 찾으십니까?
다음과 유사한 ID를 가진 DOM 요소가 있습니다.
something[500]
Ruby on Rails 애플리케이션에 의해 만들어진 것입니다.저는 이 요소를 jQuery를 통해 가져올 수 있어야 DOM의 상위를 이동하여 미리 접근할 수 없는 변수 ID를 가진 상위 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="something['+id+']"]')
ID는 대괄호를 포함할 수 없습니다.사양상 금지되어 있습니다.
일부 브라우저는 오류를 수정하고 대처할 수 있지만 잘못된 데이터를 처리하기 보다는 데이터를 수정해야 합니다.
대괄호는 jQuery selector, 특히 속성 필터에 특별한 의미가 있습니다.
이것들을 탈출하면 당신의 요소가 잘 될 것입니다.
$( "#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\\]")
(다른 많은 사람들처럼 그저 답일 뿐, 다같이 :)
언급URL : https://stackoverflow.com/questions/1239095/find-dom-element-by-id-when-id-contains-square-brackets
'programing' 카테고리의 다른 글
코디네이터 레이아웃의 도구 모음 아래에 보기 추가 (0) | 2023.10.31 |
---|---|
LocalStorage에서 부울 값을 설정할 수 없습니까? (0) | 2023.10.31 |
응용프로그램별 링커 스크립트에 정의된 접근 기호 (0) | 2023.10.26 |
"중복 키 업데이트 시"를 사용할 때 행이 삽입 또는 업데이트되었는지 어떻게 알 수 있습니까? (0) | 2023.10.26 |
numpy/ctype을 사용하여 C-할당 메모리 버퍼를 노출하는 보다 안전한 방법은? (0) | 2023.10.26 |