1

フォーカスアウト時にキーダウン イベントを再バインドしようとしています。再バインド時にキーダウンに何を渡すかはよくわかりません。これを渡そうとしましたが、運がありませんでした。

誰?ありがとう

$('input.text').bind({
            click : function(e) { 

            },focusin : function(e) {

            },focusout : function() {
                // rebind keydown
                            // $(this).bind('keydown', this);
            },keydown : function() {
                $(this).unbind('keydown');
            }
4

2 に答える 2

4

考えられる解決策の 1 つは、要素でバインド メソッドを呼び出す前にイベント関数を定義し、それを再利用してフォーカスアウト時に再バインドすることです。次のようになります:
(このコードは機能するはずです...)

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

楽しい。

于 2011-11-06T17:19:17.117 に答える
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
}
于 2011-11-06T17:09:45.347 に答える