我正在尝试在focusout上重新绑定keydown事件。重新绑定时不确定如何传递给keydown。我尝试过这个,但没有运气。
任何?感谢
$('input.text').bind({
click : function(e) {
},focusin : function(e) {
},focusout : function() {
// rebind keydown
// $(this).bind('keydown', this);
},keydown : function() {
$(this).unbind('keydown');
}
答案 0 :(得分:4)
其中一个可能的解决方案是在调用元素上的bind方法之前定义事件函数,然后在聚焦时重新使用它来重新绑定。它是这样的:
(这段代码应该有用......)
keyDownFn = function() {
console.log('this will happen only on the first keydown event!');
$(this).unbind('keydown')
}
$('input.text').bind({
click: function(e) {},
focusin: function(e) {},
focusout: function() { $(this).bind('keydown', keyDownFn); },
keydown: keyDownFn
})
享受。
答案 1 :(得分:3)
您必须保存对该功能的引用。通过保存对该函数的引用,您可以重新绑定原始函数:
var keydown_func = function() {
$(this).unbind('keydown');
};
$('input.text').bind({
click : function(e) {
},focusin : function(e) {
},focusout : function() {
// rebind keydown
$(this).bind('keydown', keydown_func);
},keydown : keydown_func
}