使用 .on 函数运行 jQuery 声明函数
Running jQuery declared function with .on function
目前这个函数工作:
$("#email_address_input").on('focusout', function(){
emailValidationCheck($(this));
});
function emailValidationCheck(e){
...
}
所以基本上,如果电子邮件地址输入元素被聚焦,那么就会运行一个匿名函数,该函数调用声明的函数emailValidationCheck
(当然,该声明的函数将电子邮件地址输入元素作为参数)。
该匿名函数感觉是多余的。 它所做的只是调用声明的函数,所以在我看来它应该被取出。
因此,我尝试做的是在事件触发时直接调用声明的函数,而不是调用匿名函数,后者又调用该声明的函数。 像这样(警告,它没有按预期工作):
$("#email_address_input").on('focusout', emailValidationCheck($(this)));
问题:我怎样才能让它工作? 还是原始答案是最佳实践? 基本上我要做的是:当 focusout
事件在指定元素上触发时,我想执行 emailValidationCheck
函数,其中传入的参数是发生所有这些事情的元素。
谢谢!
不需要使用匿名函数作为事件的回调。您可以轻松地调用已定义的函数,而无需使用 ()
前体(因为包含 这将基本上将 emailValidationCheck
的返回值传递给回调,而不是函数引用本身)。例如:
$("#email_address_input").on('focusout', emailValidationCheck);
现在,emailValidationCheck
函数将在函数构造函数中定义的e
变量中接收事件。
由于该函数已绑定为回调,因此$(this)
在其中也可用。例如:
function emailValidationCheck(e)
{
console.log( e ); // logs the event
console.log( $(this) ); // logs the jQuery object that lost focus
}
jsFiddle 演示
这不是javascript的工作方式。.on() 函数需要一个函数作为参数。可以传递匿名函数或函数名称。一旦你把 () 放在最后,它就会内联执行函数并将结果传递给 .on() 函数。
相关文章:
- 直接在函数声明上使用function.prototype.bind
- 可以Resharper在我的javascript函数声明中添加分号
- 此行是否包含函数声明
- 函数声明与函数表达式之间的性能差异
- 为什么在javascript函数声明中使用逻辑运算符
- 函数声明未定义-原因
- JavaScript执行从函数声明开始,而不是从$(document).ready()开始
- 杰辛特 |传递默认设置 |函数声明和“this”
- 未知的 JavaScript 函数声明模式
- JavaScript 中的函数声明
- 在函数声明而不是运行时分析所有变量
- 命名函数声明有什么好处吗
- 将一个简单的函数声明形成JavaScript中的闭包
- 返回语句后的函数声明全局变量不会被覆盖
- (this)在函数声明之后
- 为什么使用 ||在变量函数声明中
- 为什么要将函数声明分配给命名变量
- 具有相同参数的 Javascript 函数声明
- 从性能的角度来看,函数声明与表达式
- 为什么 Mozilla Javascript 调试器的断点会捕捉到函数声明