当快速移动鼠标时,jQuery鼠标悬停事件会多次触发

时间:2013-09-05 13:49:22

标签: jquery ajax wordpress

我正在使用jquery mouseover事件在wordpress中使用ajax获取一些数据,ajax工作正常,但我的问题是当我们将鼠标移到元素上时,更快的事件会触发多个动作,即如果我在鼠标上发出警报如果我在元素上反复移动,我会得到多个警报,我不想要这个,我尝试过unbind,但是没有正常工作。

<ul class="tab-content">
<li><div class="place-holder"></div></li>
<li><div class="place-holder"></div></li>
<li><div class="place-holder"></div></li>
<li><div class="place-holder"></div></li>
</ul>


$(document).on('mouseover', '.place-holder' , function(e){
alert ('hallo');
}

3 个答案:

答案 0 :(得分:5)

一种解决方案是使用计时器延迟操作。就像:

var timer;
$(document).on('mouseover', '.place-holder' , function(e){
    clearTimeout(timer)
    timer = setTimeout(function(){
        alert('Hallo');
    }, 200)
})

这样,您的事件将在鼠标悬停后0.2秒触发,如果您快速移动则仅触发一次。

答案 1 :(得分:1)

$(document).ready(function(){
   $('.place-holder').mouseenter(function(){
      alert('hello');
   })
})

http://api.jquery.com/mouseenter/ - mouseenter jquery参考

答案 2 :(得分:0)

实际上问题与Ajax Call有关,当我触发一个事件时,它会在ajax结果出现之前多次触发。所以我所做的是使用像这样的布尔标签

 if (window.isRunning) return;
 window.isRunning = true;

和ajax

complete : function () {
                            window.isRunning = false;
                    }

所以现在它不会多次开火,我从Stack本身得到了这个,多亏了一吨