这是我遇到困难的地方:
$('div.sidebar_content_con').hover(function () {
$(this).children('.sidebar_details_container').slideDown(500, function() {
$(this).children('.sidebar_details, .sidebar_click').fadeIn(500);
});
},function(){
$(this).children('.sidebar_details_container').slideUp(500)
$('.sidebar_details, .sidebar_click').fadeOut(500);
});
问题是当slideDown和fadeIn动画正在发生时,可能会触发多个悬停事件。理想情况下,只有1个悬停事件应该触发,如果用户不再悬停在div.sidebar_content_con上,它应该在那里停止动画。
答案 0 :(得分:3)
添加一些stop()
s
$('div.sidebar_content_con').hover(function () {
$(this).children('.sidebar_details_container').stop(true, true).slideDown(500, function() {
$(this).children('.sidebar_details, .sidebar_click').stop(true, true).fadeIn(500);
});
},function(){
$(this).children('.sidebar_details_container').stop(true, true).slideUp(500)
$('.sidebar_details, .sidebar_click').stop(true, true).fadeOut(500);
});
答案 1 :(得分:1)
您可以对事件使用stopImmediatePropagation()以避免冒泡并启动其他事件
$('div.sidebar_content_con').hover(function (event) {
event.stopImmediatePropagation();
$('div.sidebar_content_con').hover(function () {
$(this).children('.sidebar_details_container').stop(true, true).slideDown(500, function()
答案 2 :(得分:0)
尝试将.stop()添加到函数链中(http://api.jquery.com/stop/):
$('div.sidebar_content_con').hover(function () { $(this).children('.sidebar_details_container').stop().slideDown(500, function() { $(this).children('.sidebar_details, .sidebar_click').stop().fadeIn(500); }); },function(){ $(this).children('.sidebar_details_container').stop().slideUp(500) $('.sidebar_details, .sidebar_click').stop().fadeOut(500); });
答案 3 :(得分:0)
您需要使用stop()
方法停止事件的传播。
$('div.sidebar_content_con').hover(function () {
$(this).children('.sidebar_details_container').stop('true, true).slideDown(500, function() {
$(this).children('.sidebar_details, .sidebar_click').stop('true, true).fadeIn(500);
});
},function(){
$(this).children('.sidebar_details_container').stop('true, true).slideUp(500)
$('.sidebar_details, .sidebar_click').stop('true, true).fadeOut(500);
});