仅当动作持续时间超过500毫秒时才起火功能

时间:2013-06-14 13:53:14

标签: jquery

所以,我正在编写一个函数来解决浏览器错误,我不会详细说明,因为你知道错误,甚至简洁地描述它们可能会很痛苦。

无论如何,我所拥有的是一个jquery函数,当鼠标进入特定区域时会触发一次点击,我遇到的问题是我希望它仅在鼠标在那里超过半秒时触发。

现在我尝试设置timeout,但所有这一切都是延迟射击,一旦你鼠标移开,该功能就会继续它的快乐方式。 那么,只有当.left悬停超过500毫秒时,我才会启动.click功能?

$(document).ready(function () {
    $('.left').mouseenter(function () {
        setTimeout(function () {
            $('.latest').click();
        }, 500);
    });

    $('.left-3').mouseenter(function () {
        setTimeout(function () {
            $('.popular').click();
        }, 500);
    });

    $('.left-5').mouseenter(function () {
        setTimeout(function () {
            $('.favsurl').click();
        }, 500);
    });
});  

1 个答案:

答案 0 :(得分:4)

您在mouseenter上调用setTimeout(),在mouseleave上调用clearTimeout()。这样,如果在时间结束之前将鼠标移出,则取消超时并且不会调用您的函数。

    var timerID;

    $('.left').mouseenter(function() { 
        timerID = setTimeout(function () {
            $('.latest').click();
        }, 500); 
    }).mouseleave(function() {
        clearTimeout(timerID);
    });

演示:http://jsfiddle.net/MWDcg/