Jquery事件处理程序函数
以下两段代码在处理函数方面有什么不同Jquery事件处理程序函数,jquery,Jquery,以下两段代码在处理函数方面有什么不同 $("#div").someEvent(function(){ myFunction(); }); $("#div").someEvent(myFunction()); 不同之处在于,第一个函数在发生someEvent时调用myFunction,第二个函数首先调用函数myFunction,并尝试将其返回的值注册为someEvent的处理程序。因此,在第二种情况下,当行$(“#div”).someEvent(myFunction())时调用myF
$("#div").someEvent(function(){
myFunction();
});
$("#div").someEvent(myFunction());
不同之处在于,第一个函数在发生
someEvent
时调用myFunction
,第二个函数首先调用函数myFunction
,并尝试将其返回的值注册为someEvent
的处理程序。因此,在第二种情况下,当行$(“#div”).someEvent(myFunction())时调用myFunction
触发事件时不执行代码>
正确的方法是执行$(“#div”).someEvent(myFunction)
,它将仅引用myFunction
作为事件处理程序。关于第二个示例
在你给出的第二个例子中
$("#div").someEvent(myFunction());
函数调用的结果被注册为在发生someEvent
时执行。
因此,当事件被注册时,函数调用发生,其结果被分配到那里
当myFunction
是一个在执行时返回函数的函数时,可以使用这种方法
像
关于第一个例子
您正在注册一个匿名函数,它将在someEvent
发生时执行
把它放在一起
进一步解释
var myFunctionGenerator = function() {
return function(){
myFunction();
}
}
//case1
$("#div").someEvent(function(){
myFunction();
});
//case2
$("#div").someEvent(myFunctionGenerator());
在上面的示例中,两个代码示例将执行相同的工作。唯一的区别是,即使在代码执行之后,case2也会将引用保留到函数生成器。您实际上是指$(“#div”)。someEvent(myFunction)代码>?你现在可以从人们那里得到关于文字问题的答案,并且假设有打字错误。不,我是指我键入的内容。也许这是不正确的;我只是对jQuery了解不够,不知道这是一个“输入错误”。尽管这回避了一个问题,但我键入的内容在技术上是否可行?
$("#div").someEvent(function(){
myFunction();
});
var myFunctionGenerator = function() {
return function(){
myFunction();
}
}
//case1
$("#div").someEvent(function(){
myFunction();
});
//case2
$("#div").someEvent(myFunctionGenerator());