jQuery:slideDown()将幻灯片备份
我遇到了一个难以再现的问题,即在向下滑动()后,jQuery:slideDown()将幻灯片备份,jquery,html,slidedown,Jquery,Html,Slidedown,我遇到了一个难以再现的问题,即在向下滑动()后,大约50%的时间向后滑动()。jQuery代码非常简单: $( document ).ready(function() { var slideOptions = { duration: 500, easing: 'linear' }; $( 'li.navtitle' ).mouseenter(function() { $( this ).next().slideDown(); return false; });
$( document ).ready(function() {
var slideOptions = {
duration: 500,
easing: 'linear'
};
$( 'li.navtitle' ).mouseenter(function() {
$( this ).next().slideDown();
return false;
});
$( 'ul.navunit' ).mouseleave(function() {
$( this ).find( 'li.navcontent' ).delay(800).slideUp();
return false;
});
});
以下是HTML:
<ul id="navigation">
<li class="navtop">
<ul class="navunit">
<li class="navtitle unselectable" unselectable="on">TITLE</li>
<li class="navcontent"><p class="textcontent">CONTENT HERE</li>
</ul>
</li>
<!-- Some more navtop/navunits... -->
</ul>
-
标题
此处的内容
有人知道我做错了什么吗?这可能是因为它触发了两次。尝试将以下内容添加到函数末尾:
$(this).unbind("mouseenter");
$(this).unbind("bind");
$(this).die();
看起来您需要在动画中添加一个
stop()
。下面是JS代码,但这里有一个指向JSFIDLE的链接,可以看到它的实际应用
我可能应该注意到,返回值为false;是我试图解决的问题,但它不起作用,应该从代码中删除。我打赌核心问题是
.delay()
。如果将鼠标移到元素外部,并在800毫秒内再次移回,则延迟计时器将触发滑块。
$( document ).ready(function() {
var slideOptions = {
duration: 500,
easing: 'linear'
};
$( 'li.navtitle' ).mouseenter(function() {
$( this ).next().stop().slideDown();
return false;
});
$( 'ul.navunit' ).mouseleave(function() {
$( this ).find( 'li.navcontent' ).stop().delay(800).slideUp();
return false;
});
});