jQuery 선택기를 단순화합니다
문제
선택기가 있습니다. "td > a.leftmenuitem:last, div > a.leftmenuitem:last
", 조금 단순화하고 싶습니다. 나는 시도했습니다."* > a.leftmenuitem:last
", "td, div > a.leftmenuitem:last
", 그리고 "(td, div) > a.leftmenuitem:last
", 첫 번째 선택기의 방식으로 작동하지 않습니다. 각각의 별도의 선택기를 만들지 않고 선택기 구문에서 이런 종류의 일이 불가능합니까?
해결책
단순화 할 수 없습니다.
td > a.leftmenuitem:last, div > a.leftmenuitem:last
공통점이 없으면 하나의 표현식으로 모든 관련 TD 및 DIV 요소를 선택할 수 있습니다. 예를 들어, 둘 다 클래스 블라를 가지고 있다면 당신은 할 수 있습니다.
.blah > a.leftmenuitem:last
그러나 피할 수 있다면 이런 종류의 표현을 사용하지 마십시오. 클래스 선택기는 느린다 (ID 및 태그 선택기와 비교).
그냥 문제가 있습니까?
a.leftmenuitem:last
?
그건 그렇고, 당신은 확실합니까? :last
올바른 선택입니까? 많은 사람들이 실수로 그것을 사용하여 착각했습니다. :last-child
. :last
페이지에있는 마지막 일치하는 요소 인 하나의 요소 만 일치합니다.
다른 팁
더 큰 것은 때로는 더 빠릅니다. 당신이 사용할 때 * 대신에 TD, 당신의 쿼리는 훨씬 느립니다.
나는 당신이 그것을 단순화 할 수 있다고 생각하지 않습니다. 대신 고유 한 클래스에 관심이있는 링크를 제공하기로 선택했습니다. "a.<my-unique-class>:last"
. 그렇게하면 jQuery는 단순히 모든 일치를 스캔 할 수 있습니다 <a>
부모가 걱정하지 않고 태그 <td>
요소.
선택기는 충분히 간단합니다. 단순화하려면 다음과 같은 작업을 수행 할 수 있습니다.
$('a.leftmenuitem:last').parent().doWhateverYouWereGoingToDo();
그러나 이것이 더 빠른 실행 시간을 초래할 것이라고 의심합니다.
어쩌면 나는 단지 혼란 스러울 수도 있지만
* > a.leftmenuitem:last
당신을 위해 일할 것입니다. 그러면 왜 함께 가지 않겠습니까?
a.leftmenuitem:last
대신에?
당신이 사용하는 선택기는 IS입니다
Parent > Child
지정된 모든 자식 요소와 일치합니다 Child
에 의해 지정된 요소의 Parent
. 사용하지 않는 한 <a>
자녀가 아닌 페이지의 다른 곳에서 요소 <div>
그리고 <td>
요소, 왜 사용하지 않는가
$('a.leftmenuitem:last')
내가 뭔가를 놓치고 있습니까?