javascript - 如何使鼠标悬停在页面刷新之前保持不变?

标签 javascript jquery css mouseevent mouseover

我希望在延迟后处理 mouseover 事件,然后在页面刷新之前处于非事件状态。

到目前为止,这是我的代码:

$(function() {
    $("#page-flip").mouseover(function() { 
        $(".box").toggleClass("box-change");
        $(".films").toggleClass("films-change");
        $(".synopsis").toggleClass("synopsis-change");
    });
});

我如何为此添加时间延迟,而不是在完全触发一次后使其处于非事件状态?谢谢 :)

最佳答案

您可以使用 .one() 让事件处理程序只触发一次:

$(function() {
    //bind a mouseover event handler that will fire only once
    $("#page-flip").one('mouseover', function() { 

        //set a timeout so the code runs after half a second
        setTimeout(function () {

            //run your code here
            $(".box").toggleClass("box-change");
            $(".films").toggleClass("films-change");
            $(".synopsis").toggleClass("synopsis-change");
        }, 500);
    });
});

这是一个演示:http://jsfiddle.net/jasper/fWakf/3/

文档:http://api.jquery.com/one

你也可以使用 .off():

$(function() {
    $("#page-flip").on('mouseover', function() { 

        //remove this event handler so it doesn't fire in the future
        $(this).off('mouseover');
        setTimeout(function () {
            $(".box").toggleClass("box-change");
            $(".films").toggleClass("films-change");
            $(".synopsis").toggleClass("synopsis-change");
        }, 500);
    });
});

这是一个演示:http://jsfiddle.net/jasper/fWakf/4/

请注意 .on() 是 jQuery 1.7 中的新内容,在本例中与 .bind() 相同。 .off() 也是新的,因此如果您使用的是早于 1.7 的版本和 .bind(),请使用 .unbind()

关于javascript - 如何使鼠标悬停在页面刷新之前保持不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9489454/

相关文章:

javascript - 使用 es2015 的 map 构建新的对象数组

javascript - 样式组件和自定义样式?

php - 如何使用 php、mysql、css 和 html 制作动态幻灯片?

javascript - 在 JavaScript/jQuery 中覆盖/合并两个对象

javascript - 设置 DIV 高度,这样文本就不会被水平切割或切片

css - Bootstrap 3网格: Overflowing columns behavior

javascript - 检查页面刷新是否触发了window.onbeforeunload?

javascript - 如果多个键是相同的JS,则对对象中的值求和

javascript - jquery - 将引用 dom 元素的变量与选择器混合

Jquery Bootstrap TouchSpin 插件和更新/重置一个选项