Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jquery中提取匿名函数_Javascript_Jquery - Fatal编程技术网

Javascript 如何在jquery中提取匿名函数

Javascript 如何在jquery中提取匿名函数,javascript,jquery,Javascript,Jquery,我有一个jquery函数keydown(),如下所示。如何提取内部函数(e){},并让其他元素调用它或将其组合到其他函数 $("tr input[id*='txtNum']").keydown(function(e) { if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) { e.preventD

我有一个jquery函数keydown(),如下所示。如何提取内部函数(e){},并让其他元素调用它或将其组合到其他函数

$("tr input[id*='txtNum']").keydown(function(e) {
    if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
        e.preventDefault();
    }
});
$(“tr输入[id*='txtNum'])。按键(函数(e){
如果((e.shiftKey | | |(e.keyCode<48 | | e.keyCode>57))和&(e.keyCode<96 | | e.keyCode>105)){
e、 预防默认值();
}
});

将您的函数分配给一个变量,并将其传递给keydown侦听器。这样,您可以根据需要重用和修改它

var keyDownListener = function(e) {
    if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode           < 96 || e.keyCode > 105)) {
        e.preventDefault();
    }
}

("tr input[id*='txtNum']").keydown(keyDownListener);
var keydowliner=函数(e){
如果((e.shiftKey | | |(e.keyCode<48 | | e.keyCode>57))和&(e.keyCode<96 | | e.keyCode>105)){
e、 预防默认值();
}
}
(“tr输入[id*='txtNum']”)键控(keyDownListener);

如果您具有编辑功能,则始终可以将函数存储在变量中

var myFunction = function(e) {
    if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
        e.preventDefault();
    }
}

关键字是
回调函数
。您可以使用预定义函数或匿名函数进行回调

概述:

function a(function(){
    console.log("hello");
}
a(); // logs "hello"
$("tr input[id*='txtNum']").keydown(function(e) {
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
    e.preventDefault();
}
});
其他可能性:

var hello = function(){
  console.log("hello");
}
function a(hello); //logss "hello" too
您可以在此处阅读更多内容:

您的案例:

function a(function(){
    console.log("hello");
}
a(); // logs "hello"
$("tr input[id*='txtNum']").keydown(function(e) {
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
    e.preventDefault();
}
});
$(“tr输入[id*='txtNum'])。按键(函数(e){
如果((e.shiftKey | | |(e.keyCode<48 | | e.keyCode>57))和&(e.keyCode<96 | | e.keyCode>105)){
e、 预防默认值();
}
});
现在将是:

var keyDownFunc = function(e) {
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
    e.preventDefault();
}
$("tr input[id*='txtNum']").keydown(keyDownFunc);
var keyDownFunc=函数(e){
如果((e.shiftKey | | |(e.keyCode<48 | | e.keyCode>57))和&(e.keyCode<96 | | e.keyCode>105)){
e、 预防默认值();
}
$(“tr input[id*='txtNum']);

是的,有一个jQuery函数用于这类事情

看看如何使用
.triggerHandler('keydown')
。这将返回jQuery对象的触发器处理程序对象。触发器处理程序上有一个
handleObj
属性,它本身有一个
handler
,这是您分配的匿名函数

在您的例子中,
$('tr input[id*='txtNum']).triggerHandler('keydown').handleObj.handler
应该为您提供匿名函数


阅读更多关于

的内容你能解释一下其他元素调用它或将它组合到其他函数中吗你知道你不必把它写成一个匿名函数吧。写你的函数,比如说
函数myKeyUp(e){…}
然后把它作为你的keyup处理程序调用:
$(“tr input[id*='txtNum'])。keydown(myKeyUp);
除了“tr input”[id*='txtNum'],“tr input[id*='txtHours']”必须使用此选项。而“tr input[id*='txtNum']”有一些其他特定的检查,只在按下键时对其本身进行检查,而不是对txtHours进行检查