仅当鼠标不在另一个元素内时,jQuery模糊

时间:2013-12-18 23:39:23

标签: jquery blur

这就是我所拥有的:

        $('#mini-panel-quick_menu .panel-col-last').mouseout(function(){
            $('#edit-search-block-form--2').blur(function(){
                $('#mini-panel-quick_menu .panel-col-last').removeClass('on');
                $('#mini-panel-quick_menu .panel-col-last').addClass('off');
                $( '#block-search-form' ).removeClass( "open" );
            });
        })

我希望模糊功能发生,但前提是你的鼠标不在“.panel-col-last”元素中。

1 个答案:

答案 0 :(得分:4)

首先,您可能需要mouseleave而不是mouseout

即使光标移动到子元素中,

mouseout也会触发,其中mouseleave仅在光标完全位于元素之外时才会触发。


您应该设置一个标记来跟踪鼠标是否在您的元素内部,并检查是否来自blur处理程序:

var mouseIsIn;
$('#mini-panel-quick_menu .panel-col-last').hover(function() {
    mouseIsIn = true;
}, function() {
    mouseIsIn = false;
});

$('#edit-search-block-form--2').blur(function(){
    if (!mouseIsIn) {
        $('#mini-panel-quick_menu .panel-col-last').removeClass('on');
        $('#mini-panel-quick_menu .panel-col-last').addClass('off');
        $( '#block-search-form' ).removeClass( "open" );
    }
});