Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.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原型的自定义jQuery函数:$.fn 比如说, $.fn.customFx = function() { //do something... } function foo(func1) { //do something... $(selector).func1(); } $(document).ready(function() { foo($.fn.customFx); } 这样做可能吗?您可以尝试将函数名作为字符串传递

我有一个函数,我想传递一个附加到jQuery原型的自定义jQuery函数:$.fn

比如说,

$.fn.customFx = function() {
  //do something...    
}

function foo(func1) {
  //do something...
  $(selector).func1();
}

$(document).ready(function() {
  foo($.fn.customFx);
}

这样做可能吗?

您可以尝试将函数名作为字符串传递。试试这个

$.fn.customFx = function() {
  //do something...    
}

function foo(func1) {
  //do something...
  $(selector)[func1]();
}

$(document).ready(function() {
  foo('customFx');
}

必须以字符串形式传入函数名

$.fn.customFx = function() {
  //do something...    
}

function foo( methodName ) {
  //do something...
  $(selector)[ methodName  ]();
}

$(document).ready(function() {
  foo( "customFx" );
}

或者,您可以使用call/apply函数来调用函数,但这会带来很大的开销。

如果可以传递函数本身,为什么要将函数名作为字符串传递?看看我的答案。@Tomalak-我同意你的看法,但这也是一种方法。嗯,不完全是这样,因为它需要硬编码函数名。传递函数引用更通用,一点也不难。在将函数作为引用传递时,也必须提到函数名。我同意Tomalak的观点,将函数作为参数传递比将函数名作为字符串传递更方便。函数可能并不总是有名称;想想匿名函数,甚至是全局命名空间中不存在的函数-
foo.bar.myFunction()
“您必须以字符串形式传入函数名……或者,您可以使用call/apply”这样就不必传入字符串。
$.fn.customFx = function() {
  //do something...    
}

function foo( methodName ) {
  //do something...
  $(selector)[ methodName  ]();
}

$(document).ready(function() {
  foo( "customFx" );
}