Javascript 运行函数时使用jquery.on

Javascript 运行函数时使用jquery.on,javascript,jquery,Javascript,Jquery,我有下面一行jquery,它对表单上任何文本输入中的任何向上键事件作出反应。然后它运行一个名为processPrimarySearch的函数: $('#primarySearch input[type="text"]').on('keyup', this, processPrimarySearch); 这是可行的,但我想对其进行调整,以便keyup忽略按tab键,如下所述: 我不知道如何重新编写,因为我不知道在调用processPrimarySearch之前如何传递this。例如,我有以下内容

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

$('#primarySearch input[type="text"]').on('keyup', this, processPrimarySearch);
这是可行的,但我想对其进行调整,以便
keyup
忽略按tab键,如下所述:

我不知道如何重新编写,因为我不知道在调用
processPrimarySearch
之前如何传递
this
。例如,我有以下内容,但它不起作用,我不明白我应该写些什么来让它起作用:

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

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

function processPrimarySearch() {
    // ...
}

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

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

function processPrimarySearch() {
  // ...
}

工作完美。非常感谢你。我不知道
.call()
,所以我会进一步研究这个问题。没问题,很乐意帮助。以下是供您参考的文件: