我应该/如何清除mousemove JQuery事件监听器?

时间:2015-04-01 15:30:11

标签: javascript jquery

当我使用

$(".page").mousemove(function(event){});

一旦mouseup事件发生,我就不再需要这个监听器了。由于我将重复应用侦听器以执行不同的操作,因此在我看来,当用户多次激活该函数时,这些侦听器可能会徘徊并构建(不必要地浪费CPU)。我不确定这是如何在内部工作的,这只是我的猜测。

我应该/如何清除mousemove JQuery事件监听器?

2 个答案:

答案 0 :(得分:5)

以下是代码:

$('.page').off('mousemove');

但请注意,以下方法会关闭mousemove上触发的所有功能。如果要关闭特定功能,则应执行以下操作:

// Define function that fires on mousemove
function anyFunctionName () {
    // Some code
}

// Set listener
$('.page').on('mousemove', anyFunctionName);

// Turn off only function called funcionName
$('.page').off('mousemove', anyFunctionName);

关闭特定功能的另一种方法是定义事件的名称:

// Define function that fires on mousemove
function anyFunctionName () {
    // Some code
}

// Set listener
$('.page').on('mousemove.anyEventName', anyFunctionName);

// Turn off only function fired on event called anyEventName
$('.page').off('mousemove.anyEventName');

答案 1 :(得分:1)

我能够使用更通用的.on.off JQuery函数而不是它们的显式处理程序来获得一个工作示例。这是我使用的代码:

$('.page').on('mousedown', function() {
    $(this).on('mousemove', function(event) {
        // Do something meaningful
    });
});
$('.page').on('mouseup', function() {
    $(this).off('mousemove');
});

以下是JFiddle Demo