событие связывания jquery - PullRequest
       0

событие связывания jquery

1 голос
/ 06 ноября 2011

Я пытаюсь заново связать событие 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 ]

4 голосов
/ 06 ноября 2011

одно из возможных решений - определить функцию события перед вызовом метода связывания элемента, а затем повторно использовать его для повторной привязки при фокусировке.это выглядит примерно так:
(этот код должен работать ...)

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
})

наслаждайтесь.

3 голосов
/ 06 ноября 2011

Вы должны сохранить ссылку на функцию. Сохраняя ссылку на функцию, вы можете перепривязать исходную функцию:

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
}
...