programing

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

lovejava 2023. 10. 26. 20:28

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