2012-05-16 64 views
1

我試圖使用jQuery.off()中的events-map屬性來禁用事件,但似乎並未禁用事件。jQuery off()與事件地圖不兼容

根據jQuery文檔off()應該使用events-map的鍵並忽略這些值。

下面是一個例子: http://jsfiddle.net/tNBMM/

檢查複選框應該做一個簡單的懸浮效果。取消選中它會調用off()函數,該函數應該禁用事件,但不會。

我在這裏做錯了什麼?

回答

4

off()需要與on()一起使用的完全相同的函數參考,以禁用它。在您當前的版本中,每次單擊該複選框時,都會在技術上創建新的mouseentermouseleave處理程序。下面是一個使用了on()off()相同功能的引用,如預期工作的更新版本:http://jsfiddle.net/tNBMM/2/


編輯:對於任何未來的訪客的緣故,這裏的工作代碼:

var enter = function() { $('#thing').css('background-color', 'red'); }, 
    leave = function() { $('#thing').css('background-color', 'white'); }; 
$('#show').click(function() { 
    var show = $(this).is(':checked'); 

    $('#thing')[show ? 'on' : 'off']({ 
     mouseenter: enter, 
     mouseleave: leave 
    }); 
});​ 
+0

小提琴不適用於我,取消複選框後,懸停效果仍然存在。 :s –

+0

Doh - 我有正確的解釋,但拙劣的執行:)。嘗試更新的鏈接(代碼示例也更新)。 – jmar777

+0

現在好了:) –