使用click和mouseleave添加和删除jQuery类

时间:2010-04-29 20:40:08

标签: jquery

我只想通过在点击时切换一个类来控制div,以及在鼠标离开div时将其删除。

我使用了mouseout,但当我进入子元素时,mouseOut被触发,所以我知道我需要使用mouseleave。我只是不确定如何合并告诉jQuery鼠标已进入。

更新: 当我使用mouseenter和mouseleave时,似乎函数不起作用 当我将它们交换为鼠标悬停和鼠标移动时,它们可以正常工作。

以下是网站:http://danixd.com/test/

它有很多,但这是代码。我再次回到我正在使用的旧jquery。

的jQuery

$(function(){
            $('.main').click(function() { 
                $(this).toggleClass('activated');
            });
        });



$(function(){
            $('.main').mouseleave(function() { 
                $(this).removeClass('activated');
            });
        });

3 个答案:

答案 0 :(得分:4)

如果我理解,你想在'click'上添加该类,并在'click'或'mouseleave'上删除该类。

如果是这样,你可以这样做。

$('.main').click(function() { 
    var $ths = $(this);
    if($ths.hasClass('activated'))
        $ths.removeClass('activated');
    else
        $ths.addClass('activated');
}).mouseleave(function() { 
    $(this).removeClass('activated');
});

答案 1 :(得分:1)

  

我只是不确定如何合并   告诉jQuery鼠标已进入。

如果是这种情况,则根据我的理解,无需处理点击事件:

$('.main').mouseenter(function() { 
    $(this).addClass('activated');
}).mouseleave(function() { 
    $(this).removeClass('activated');
});

答案 2 :(得分:0)

我认为这就是你要找的东西:

    $('.main').click(function() {
            if ($(this).attr("class").indexOf("activate") > -1) {
                $(this).removeClass("activate");
            } else {
                $(this).addClass("activate");
            }
    }).mouseleave(function() {
        $(this).removeClass("activate");
    });