Событие связывания jquery
Я пытаюсь повторно связать событие keydown на focusout. Не совсем уверен, как передать ключ при повторной привязке. Я пытался передать это, но безуспешно.
Кто-нибудь? Спасибо
$('input.text').bind({
click : function(e) {
},focusin : function(e) {
},focusout : function() {
// rebind keydown
// $(this).bind('keydown', this);
},keydown : function() {
$(this).unbind('keydown');
}
2 ответа
Решение
Вы должны сохранить ссылку на функцию. Сохраняя ссылку на функцию, вы можете перепривязать исходную функцию:
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
}
Одно из возможных решений - определить функцию события перед вызовом метода привязки элемента, а затем повторно использовать его для повторной привязки при фокусировке. Это выглядит примерно так:
(этот код должен работать...)
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
})
наслаждаться.