捕获DOM元素的事件,但具有特定类的元素除外

时间:2012-05-26 22:08:23

标签: jquery jquery-selectors

我有一组标签,并希望为其添加mouseover功能。我不希望将此功能应用于.active

标记:

<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(){

但这些都不奏效。如何从此功能中排除该活动?

1 个答案:

答案 0 :(得分:0)

  

一个可能的问题是我正在通过addClass添加活动以响应另一部分中的点击。上面的语法会处理这个吗?

这就是问题所在。在加载时添加mouseover事件时,活动类不存在,因此.not()不会排除任何内容。相反,您需要检查处理程序本身内的类。

试试这个:

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

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

Example fiddle