jquery, id 내의 클래스 선택자


91

아래에서 요소 my_class내에서 클래스를 포함하는 요소를 어떻게 선택해야 id = "my_id"합니까?

요소에는 내가 선택하지 않는 다른 클래스가있을 수도 있습니다.

<div id = "my_id">
    <span class = "my_class hidden">hi</span>
    <span class = "my_class">hello</span>
</div>

노력 중이었다

$("#my_id [class*=my_class ]")

답변:



48

일반 ol '클래스 선택기를 사용하십시오.

$('#my_id .my_class')

요소에 다른 클래스도 있는지 여부는 중요하지 않습니다. 그것은이 .my_class의 클래스를 내부 그것의 어딘가에 #my_id 는 그 선택과 일치합니다 그래서.

성능에 대하여

jQuery 선택기 성능 문서 에 따르면 다음과 같이 두 개의 선택기를 별도로 사용하는 것이 더 빠릅니다.

$('#my_id').find('.my_class')

문서의 관련 부분은 다음과 같습니다.

ID 기반 선택기

// Fast:
$( "#container div.robotarm" );

// Super-fast:
$( "#container" ).find( "div.robotarm" );

.find()ID 전용 선택을 사용하여 처리됩니다 - 첫 번째 선택이 지글 지글 셀렉터 엔진을 거치지 않고 처리되기 때문에 접근이 빠르다 document.getElementById()는 브라우저에 기본 때문에 매우 빠른이다.

ID 별 또는 클래스 별 (다른 것들 중에서) 단독으로 선택하면 브라우저에서 제공하는 함수 document.getElementById()가 매우 빠르게 호출되는 반면, 하위 선택기를 사용하면 언급 된대로 Sizzle 엔진이 호출되며 이는 빠르지 만 제안 된 대안보다 느립니다.



1

<span class = "my_class">hello</span>이 요소 만 선택해달라고 요청하신 것 같습니다. 이렇게하셨습니다. 질문을 올바르게 이해했다면 이것이 답입니다.

$("#my_id [class='my_class']").addClass('test');

DEMO


$("#my_id .my_class")더 짧은 등가물입니다. 이 경우 속성 선택기를 사용하면 아무것도 얻지 못합니다.
doppelgreener 2015 년

나는 또한 당신의 대답과 같은 일을했기를 바랍니다. 당신이 대답 한 질문에 대답하는 동안 나는 대답을 한 이후 질문을 삭제하지 않은 것을 알지 못했습니다.
Thirumalai murugan 2015 년

1

또한 다음 $( "#container" ).find( "div.robotarm" );
과 같습니다.$( "div.robotarm", "#container" )

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.