2010-08-09 108 views
3

我們稱之爲.live()方法是這樣的:'hover'方法的`.live()`綁定的正確語法是什麼?

$('.link').live('click', loadContent); 

但是關於如果我結合hover,而不是什麼,這就要求用逗號分隔的兩個功能呢?當我把這個:

$('.thumb.dim').live('hover', function(){$(this).removeClass('dim');}, function(){$(this).addClass('dim');}); 

mouseenter事件不觸發上述第一功能(removeClass('dim')),但mouseleave沒有任何反應。有沒有正確的方法來寫這個?

回答

2

live只需要一個回調,但你可以檢查所傳遞的事件信息的回調類型:

$('.thumb.dim').live('hover', function(e) { 
    if (e.type == 'mouseover') { 
     $(this).removeClass('dim'); 
    } else { 
     $(this).addClass('dim'); 
    } 
}); 

或者因爲你只是刪除/添加類,你可以做;

$('.thumb.dim').live('hover', function(e) { 
    $(this).toggleClass('dim'); 
}); 
2

猜 - 我不知道jQuery如何做到這一點內部。

難道是事件不會被觸發,因爲它不再昏暗?您可以嘗試添加一個dim_disabled班級或類似的事件和dim_disabled的鼠標事件以恢復dim

0

呃!該函數將刪除觸發該函數的類!一旦在mouseenter上刪除'dim'類,this不再響應mouseout事件!