2011-06-28 45 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() 
相關問題