2012-05-26 3 views
0

나는 일련의 탭을 가지고 있으며 그들에게 mouseover 기능을 추가하려고합니다. 이 기능을 .active에 적용하고 싶지 않습니다.특정 클래스가 아닌 DOM 요소의 이벤트를 캡처하십시오.

마크 업 :이 시도

<ul> 
    <div class='tab'>my tab</div> 
    <div class='tab' data-id='1'>your tab</div> 
</ul> 

<script> 
    $('.tab').on('click',function(){ 
    $(this).addClass('active'); 
    }); 
</script> 

:

$('.tab').not('.active').on('mouseover', function(){ 

$('.tab:not(.active)').on('mouseover', function(){ 

그러나이 작품의도. 해당 기능을이 기능에서 어떻게 제외합니까?

+0

당신이 잘 작동한다 무엇을 가지고,이 바이올린을 참조하십시오. 왜 그것이 당신을 위해 작동하지 않는지 설명해 주시겠습니까? –

+0

확인 - 가능한 한 가지 문제는 다른 섹션의 클릭에 대한 응답으로 addClass를 통해 활성을 추가한다는 것입니다. 위의 구문이 이것을 처리합니까? – timpone

+0

모든 것이 나를 위해 작동합니다. http://jsfiddle.net/wCRzZ/ –

답변

0

하나의 가능한 문제는 다른 섹션의 클릭에 대한 응답으로 addClass를 통해 활성을 추가한다는 것입니다. 위의 구문이 이것을 처리합니까?

이것이 문제입니다. 로드시 mouseover 이벤트를 추가 할 때 활성 클래스가 없으므로 .not()은 아무 것도 제외하지 않습니다. 대신 처리기 자체의 클래스를 확인해야합니다.

이 시도 : http://jsfiddle.net/9vJP2/ :

$('.tab').on('mouseover', function() { 
    if (!$(this).hasClass("active")) { 
     // your code here 
     $(this).css("background-color", "#C00"); 
    } 
}); 

$(".tab:last").addClass("active"); 

Example fiddle

+0

thx - 의미가 있습니다. – timpone

관련 문제