jquery mouseleave也在进入期间开火

时间:2014-08-12 10:11:00

标签: jquery mouseleave

我有一个简单的jquery代码:

    $(document).ready(function(){
        var i=0;
        $(this).mouseleave(function(){

            $('body').append(++i+'<br/>');
        });
    });

即使鼠标进入浏览器窗口,此代码也会触发。如何仅在鼠标离开浏览器窗口时才启动它?这对我来说是 chrome 的问题。

此处的工作示例: http://tapasdwivedi.com/test1/

2 个答案:

答案 0 :(得分:0)

尝试一下:

$(document).ready(function(){
  var i=0;
  $(this).mouseenter(function(){
    return false;
  });
  $(this).mouseleave(function(){
    $('body').append(++i+'<br/>');
  });

});

答案 1 :(得分:0)

对于最新版本的Chrome,这看起来有些问题。这里讨论的是:https://github.com/carlsednaoui/ouibounce/issues/48和这里:https://github.com/carlsednaoui/ouibounce/pull/55正在尝试为我正在尝试实现此功能的插件开发。

我现在看到的唯一解决方法是添加一个3000毫秒的setTimeout,假设大多数访问者将进入窗口3秒钟:

setTimeout(function(){
    $(document).mouseleave(function(e){
       if(i==0){
           $('body').append('hello<br/>');
           ++i;
       }
    });
},3000);

这不是一个很好的答案,但我保留在这里,直到有人给出一个坚实的答案。