Javascript 在页面刷新之前,如何使鼠标悬停?
我希望在延迟后处理Javascript 在页面刷新之前,如何使鼠标悬停?,javascript,jquery,css,mouseevent,mouseover,Javascript,Jquery,Css,Mouseevent,Mouseover,我希望在延迟后处理mouseover事件,然后在页面刷新之前处于非活动状态 这是我迄今为止的代码: $(function() { $("#page-flip").mouseover(function() { $(".box").toggleClass("box-change"); $(".films").toggleClass("films-change"); $(".synopsis").toggleClass("synopsis-ch
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);
});
});
下面是一个演示:
文件:
您还可以使用.off()
:
下面是一个演示:
请注意,.on()
在jQuery 1.7中是新的,在本例中是相同的.bind()
.off()
也是新的,因此如果您使用的是早于1.7和.bind()
,则使用.unbind()
可以使用.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);
});
});
下面是一个演示:
文件:
您还可以使用.off()
:
下面是一个演示:
请注意,
.on()
在jQuery 1.7中是新的,在本例中是相同的.bind()
.off()
也是新的,因此如果您使用的是早于1.7和.bind()
,则使用.unbind()
编辑此答案比。但是它所使用的模式不需要jQuery,所以我将其保留
您可以简单地使用全局变量,也可以复杂地完全删除事件 简单的看起来像这样
var __GlobalEventFired = false;
$(function() {
$("#page-flip").mouseover(function() {
if(!__GlobalEventFired)
{
__GlobalEventFired = true;
$(".box").toggleClass("box-change");
$(".films").toggleClass("films-change");
$(".synopsis").toggleClass("synopsis-change");
}
});
});
编辑这个答案比。但是它所使用的模式不需要jQuery,所以我将其保留
您可以简单地使用全局变量,也可以复杂地完全删除事件 简单的看起来像这样
var __GlobalEventFired = false;
$(function() {
$("#page-flip").mouseover(function() {
if(!__GlobalEventFired)
{
__GlobalEventFired = true;
$(".box").toggleClass("box-change");
$(".films").toggleClass("films-change");
$(".synopsis").toggleClass("synopsis-change");
}
});
});
你知道解除绑定吗?你知道解除绑定吗?太棒了,非常感谢。:)现在我只需要延迟。@user1179593我的代码中的
setTimeout
创建延迟。您可以将500
更改为您希望代码等待的任何其他毫秒数。非常感谢。:)现在我只需要延迟。@user1179593我的代码中的setTimeout
创建延迟。您可以将500
更改为您希望代码等待的任何其他毫秒数。