0

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

<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');
}
4

3 回答 3

5

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

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

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

于 2013-09-05T13:55:12.360 回答
1
$(document).ready(function(){
   $('.place-holder').mouseenter(function(){
      alert('hello');
   })
})

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

于 2013-09-05T13:53:08.147 回答
0

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

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

并在 ajax

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

所以现在它不会多次触发,我从 Stack 本身得到了这个,非常感谢

于 2013-09-06T06:06:45.977 回答