2011-06-28 40 views
1

这里就是我有困难:如何防止未完成jquery悬停事件触发?

$('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和淡入动画正在发生多次悬停事件可以触发。理想情况下,只有1个悬停事件应该触发,如果用户不再悬停在div.sidebar_content_con上,它应该停止动画。

+0

你能分享一些简单的HTML? –

回答

2

中加入某些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);             
}); 
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);             
}); 

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);             
}); 
1

你可以在事件中使用stopImmediatePropagation(),以避免起泡AUP和解雇等事件

$('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() 
相关问题