我是jQuery
的新手。我有这段代码。这是fiddle的链接。在这里,您可以看到何时悬停在#flip
上它会向下滑动,当您将鼠标移出时它会向下滑动。从现在开始它的工作正常。但是我希望有hoverIntent
这样如果有人会用它来悬停和播放,那么它不会影响幻灯片自动运行。
我的jQuery代码看起来像这样
<script>
$(document).ready(function(){
$("#flip").hover(function(){
$("#panel").slideToggle("slow");
});
});
</script>
答案 0 :(得分:1)
添加stop
以停止当前正在运行的动画。
$(document).ready(function(){
$("#flip").hover(function(){
$("#panel").stop(true, true).slideToggle("slow");
});
});
第一个参数用于删除排队的动画,第二个参数用于立即完成当前动画。
答案 1 :(得分:0)
将您的内容包装在容器元素中,并将悬停事件附加到该容器元素中。这样你就没有真正停止在任何一个元素上盘旋。
<强> HTML 强>
<div id="container">
<div id="flip">Hover on panel to slide the panel down or up</div>
<div id="panel">Hello world!</div>
</div>
<强>的Javascript 强>
$(document).ready(function(){
$("#container").hover(function(){
$("#panel").slideToggle("slow");
});
});
查看更新的jsFiddle demo
答案 2 :(得分:0)
如果用户只是用鼠标在元素上旅行,幻灯片将不会触发,以防止挫折:)
如果鼠标仍然在#panel
之上,则会在显示#flip
之前等待300毫秒!
悬停意图
的 LIVE DEMO 强>
var $panel = $('#panel');
$("#flip").on('mouseenter mouseleave', function( e ) {
return e.type=="mouseenter" ? panelOn() : panelOff() ;
});
function panelOn() {
$panel.data('wait', setTimeout(function(){
$panel.stop().slideDown(600);
},300) );
}
function panelOff() {
clearTimeout( $panel.data('wait') );
$panel.stop().slideUp(600);
}
此外,如果您希望在我们悬停它时保持#panel
打开,请将元素添加到父元素,并将触发元素选择器更改为其ID