jQuery(document).ready(function() { jQuery('.slidedown').hide(); jQuery('a.top-link-cart').hover( function(){ // enter animation jQuery('.slidedown').stop(true,true).animate({ height: ['toggle', 'swing'], }, 600, function() { /* animation done */ }); }, function(){ // leave animation jQuery('.slidedown').mouseout( function() { setTimeout( function(){ jQuery('.slidedown').stop(true,true).animate( { height: '0px'}, 600, function(){});}, 200 ); // setTimeout ends here }); // mouseout ends here }); });
如果用户将鼠标从链接移到div而关闭,如果用户将鼠标从链接移开但不移入div并且c)关闭,如果用户移动,那么我想要实现的就是拥有div a)保持打开状态小鼠出了div。我认为.mouseout函数会保持div打开,这样我至少可以将鼠标移到它上面但它不起作用。有任何想法吗?我非常感激这对我来说已经让我头疼了一个星期了。感谢。
答案 0 :(得分:1)
你不应该使用.hover而是.mouseover()代替第一种方法。
答案 1 :(得分:0)
您需要将div.slidedown
嵌套在a.top-link-cart
:
<a class="top-link-cart">Show login form
<div class="slidedown">
The login form HTML
</div>
</a>
忽略标准(<div>
标记之类的块元素不应该真正嵌套在内联元素中,例如<a>
标记),这将起作用,因为{{1} }扩展,父div.slidedown
也是如此。
这样,在用户的鼠标离开<a>
之前,不会触发mouseout事件。
希望这有帮助。
答案 2 :(得分:0)
您可以将链接和执行动画的div包装在另一个div中,然后将悬停应用于父div而不是链接。这样你仍然会验证。例如:
<div class="whatever">
<a class="top-link-cart">Show login form</a>
<div class="slidedown">form html goes here</div>
</div>
,javascript将是:
jQuery(document).ready(function(){
jQuery('.slidedown').hide();
jQuery('.whatever').hover(function(){//to show
jQuery('.slidedown').show('effect', duration in millisecs);
}, function(){//to hide
jQuery('.slidedown').hide('effect', duration in millisecs);
});
});
这使用jQueryUI作为动画效果,但你可以使用.slideDown()和.slideUp()方法,如果你需要的只是要向上或向下滑动的div