当我使用
时$(".page").mousemove(function(event){});
一旦mouseup
事件发生,我就不再需要这个监听器了。由于我将重复应用侦听器以执行不同的操作,因此在我看来,当用户多次激活该函数时,这些侦听器可能会徘徊并构建(不必要地浪费CPU)。我不确定这是如何在内部工作的,这只是我的猜测。
我应该/如何清除mousemove JQuery事件监听器?
答案 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。