2015-01-12 19 views
1

附加事件处理程序:删除特定的事件处理程序

$(document).on('keypress', function(event){ 
    #1 
}); 

这将删除所有的 “按键” 事件处理程序:

$(document).off('keypress'); 

我只希望我的代码删除#1以上

灿这可以在不使用名称空间的情况下完成?我不想创建随机字符串被用作命名空间:(

+0

什么是与使用的命名空间的问题?你并不需要使用随机字符串。如果使用有意义的字符串这将是可取的Ť他的。然后,您不必为了在事后删除事件而拖延原有功能。 – JLRishe

回答

3

传递原始处理程序off。确保你传递原,而不是一个新的匿名功能,只是看起来是一样的。

这意味着你将需要储存。

var handler = function(event){ 
    #1 
}; 

$(document).on('keypress', handler); 

$(document).off('keypress', handler); 
+0

但文档说第二个参数是一个选择器字符串。第三个是一个函数,但是eventObject类型。我是匿名的?! – Elfy

+0

@Elfy:方括号内的参数表示可选参数。这意味着可以排除任何或全部。所以在这种情况下,我们排除了字符串,但包含了函数。 –

+0

@Elfy文档中的Event eventObject指示传递给函数的参数是什么类型。没有多种类型的功能。 – JLRishe