2014-10-23 2 views
1

jQuery를 사용하여 요소를 선택하는 데 문제가 있습니다.jQuery에서 두 개의 연속적인 의사 선택기가 작동하지 않습니다.

내 HTML 코드는 아래로 온다 :이 경우, 나는 부모 (몸의 마지막 요소를 선택하려고 선택기 $('p:not(.fabulous):last-child')

$(document).ready(function(){ 
    $('p:not(.fabulous):last-child').css({'background':'yellow'}); 
}); 

: 일부 jQuery로

<body> 
    <p>Dont mind me, sir</p> 
    <p>Select me please!</p> 
    <p class="fabulous">So fab</p> 
</body> 

) "멋진"클래스가 없습니다. $('p:not(.fabulous)')을 사용하면 body의 멋진 어린이는 모두 선택하지만 나머지는 p 개 요소의 마지막 어린이를 선택할 수없는 이유는 무엇입니까? :last-child:not(의 동작이나 오해 한 선택기에 관한 답변에 감사드립니다.

감사합니다.

+1

[': last-child'] 대신 [': last'] (http://api.jquery.com/last-selector/)을 사용해보십시오 (http://api.jquery.com/last- 자식 선택자 /). –

+0

': last'가 jQuery 확장 기능이 아닌가요? 확장 기능을 사용하지 않고 작업을 수행하고 싶기 때문에 ... –

+0

"확장 기능"에 어떤 문제가 있습니까? DOM 성능이 걱정 되십니까? –

답변

1

:last-child부모마지막 자식 모든 요소를 ​​선택하십시오. <body>의 마지막 (<p>) 자식은 <p class="fabulous">입니다. 당신이 p:not(.fabulous):last-child 할 때

그래서, 당신은 모두 부모의 마지막 자식 클래스 fabulous이없는입니다 <p> 요청하고 있습니다. 이러한 요소가 없습니다.

이 경우 $('p:not(.fabulous):last')을 사용해야합니다.

+0

이것을 설명하기 때문에 이것을 최선의 대답으로 고르는 것 - 감사합니다! –

+0

당신을 환영합니다 :-) –

1

$('p:not(.fabulous):last').css({'background-color':'yellow'}); 또는 $('p:not(.fabulous)').last().css({'background-color':'yellow'}); 대신

관련 문제