【发布时间】:2011-09-26 00:04:50
【问题描述】:
我正在使用鼠标悬停来更改 jQuery Supersized 插件上的幻灯片编号,具体取决于您悬停的按钮。
但是,如果在滚动到另一个按钮之前尚未完成下一张幻灯片的淡入淡出动画,则不会更改幻灯片。
有没有办法每隔几毫秒重新检查鼠标是否仍然在按钮上,如果尚未加载幻灯片,则加载幻灯片?
如果鼠标在一段时间内没有在任何按钮上移动,我还想加载另一张幻灯片。如何堆叠事件以便 mouseout 引用所有按钮并添加时间事件?
到目前为止我的代码(mouseout 目前只适用于最后一个按钮):
$(".mybutton1").mouseover(function() {
api.goTo(2);
});
$(".mybutton2").mouseover(function() {
api.goTo(3);
});
$(".mybutton3").mouseover(function() {
api.goTo(4);
}).mouseout(function(){
api.goTo(1);
});
提前致谢!
.
======================更新=====================
非常感谢您的最新更新。不幸的是,我无法让您的代码正常工作。但是,我想我可能已经找到了一个更简单的解决方案,修改您的原始代码并使用 jQuery hoverIntent...
我发现我可以禁用 Supersized 在动画期间停止幻灯片更改,我可以使用 hoverIntent 确保它在更改幻灯片之前等待足够的时间,这样动画就不会堆叠。
以下代码可以完美地更改鼠标悬停时的幻灯片。
但是我不能让 mouseout 工作,因为它为每个按钮创建了一个新实例,并且当鼠标从一个按钮滚出到下一个按钮时,它会堆叠动画。此外,似乎只有鼠标悬停的延迟计时器,而不是鼠标悬停之类的间隔选项。
所以我只需要稍微修改一下:
如果鼠标在 1000 毫秒内没有在任何按钮上,则 api.goTo(1);
我能想到的唯一方法是在浏览器窗口的整个大小上创建一个不可见的链接,并运行第二个 hoverIntent 函数来在幻灯片滚动时更改幻灯片,但我认为这不会是最好的办法!
谢谢
var buttonNumber = <?php echo $project_count; ?>; //Change this number to the number of buttons.
var prefix = "#project-link";
var prefix2 = "#project-bullet";
for(var i=0; i<buttonNumber; i++){
(function(i){ //Anonymous function wrapper is needed to scope variable `i`
var id = prefix+i;
$(id).hoverIntent({
interval: 350,
over: mouseyover,
timeout: 1000,
out: mouseyout
});
function mouseyover(){
api.goTo(i+2);
$(".project-bullet").fadeOut(1);
$(prefix2+i).fadeIn(1000);
}
function mouseyout(){
//api.goTo(1);
}
})(i);
}
【问题讨论】:
标签: jquery timer hover mouseevent mouseover