在运行函数时使用jquery .on

时间:2017-06-29 09:20:25

标签: javascript jquery

我有以下jquery行,它对表单上任何文本输入中的任何键向上事件做出反应。然后它运行一个名为processPrimarySearch的函数:

$('#primarySearch input[type="text"]').on('keyup', this, processPrimarySearch);

这样做有效,但我想对其进行调整,以便keyup忽略按Tab键,如下所述:Keyup event behavior on tab

我无法弄清楚如何重写这个,因为我不知道在调用this之前如何传递processPrimarySearch。例如,我有以下但它不起作用,我不明白我应该写什么来使它工作:

$('#primarySearch input[type="text"]').on({

    "keyup": function(e) {
        if (e.which != 9) {
            // No reference to 'this'!
            processPrimarySearch();
        }
    }
});

function processPrimarySearch() {
    // ...
}

1 个答案:

答案 0 :(得分:3)

您的逻辑几乎是正确的,您只需使用call()来为函数提供上下文。试试这个:

$('#primarySearch input[type="text"]').on({
  "keyup": function(e) {
    if (e.which != 9) {
      processPrimarySearch.call(this);
    }
  }
});

function processPrimarySearch() {
  // ...
}