Mouseenter在mouseenter里面或外面?

时间:2013-03-23 03:23:49

标签: jquery html performance

我正在学习jQuery的基础知识,当我发现mouseleave和mouseenter动作时,我开始想知道我应该在哪里放置mouseleave动作?哪一个更正确并且一直有效?

$(document).ready(function(){
    $('div').mouseenter(function(){
        $(this).fadeTo('fast','1');
        $(this).mouseleave(function(){
            $(this).fadeTo('fast','0.25');
        });
    });
});

或者这个1更好?

$(document).ready(function(){
    $('div').mouseenter(function(){
        $(this).fadeTo('fast','1');
        });
        $('div').mouseleave(function(){
            $(this).fadeTo('fast','0.25');
        });
});

1 个答案:

答案 0 :(得分:3)

您的第二个选项更正确,它应始终设置单个事件。每次触发mouseleave时,您的第一个选项都会添加新的mouseenter事件,从而导致许多附加事件。所以使用:

$('div').mouseenter(function () {
    $(this).fadeTo('fast', 'fast');
});
$('div').mouseleave(function () {
    $(this).fadeTo('fast', '0.25');
});

.hover(handlerIn, handlerOut)实际上有一些很好的简写。

$('div').hover(
    function () { $(this).fadeTo('fast', 'fast'); },
    function () { $(this).fadeTo('fast', '0.25'); }
);