如何在jQuery中调用带参数的普通JS函数?

1l5u6lss  于 2022-12-22  发布在  jQuery
关注(0)|答案(4)|浏览(165)

除了我下面使用的方法之外,是否还有其他方法可以运行传递参数的常规JS函数?
使用途中函数来完成此操作似乎是多余的。

function regularJSfunc(param1,param2) {
  // do stuff
}
$(document).ready(function(){
  $('#myId').change(function(){
      regularJSfunc('data1','data2');
    });
}

使用.bind事件似乎更好,但是我不确定如何访问参数。

:以下示例不起作用。

$(document).ready(function(){
  $('#myId').bind('change',{'data1','data2'},regularJSfunc);
}
irtuqstp

irtuqstp1#

除了使用bind()和事件属性外,还可以使用partial function application

Function.prototype.curry = function() {
 var fn = this, args = Array.prototype.slice.call(arguments);
 return function() {
  return fn.apply(this, args.concat(
   Array.prototype.slice.call(arguments)));
 };
};

(Prototype.js内置了此扩展。)
那么您的代码可能类似于

$(document).ready($('#myId').change(regularJSfunc.curry('data1','data2'));
tcomlyy6

tcomlyy62#

在第二个示例中,数据必须是map

function myFunc( event )
{
alert( event.data.data1 );
//or alert( event.data['data1'] );
}

$(document).ready(function(){
  $('#myId').bind('change',{'data1':'some data'},myFunc);
}
u3r8eeie

u3r8eeie3#

没有。
jQuery event handlers接收一个function对象,用一个参数eventObject来调用它,如果你想传递你自己的参数,那么你可以选择传递一个中间函数,这个函数会用你想要的参数来调用你的最终函数。
你可以通过传递一个匿名函数来达到这个效果,就像你在工作示例中提供的那样,这也是从jQuery事件绑定中调用一个带有自定义参数的常规函数的 * 标准 * 方式(* 标准 * 意味着 * 我看到每个人都在做 *)。

lzfw57am

lzfw57am4#

以下是您尝试执行的操作:

$(function(){
    $('#myId').bind('change',{'data':["data1","some data"]},regularJSfunc);
});

然后你可以像这样访问数据:

function regularJSfunc(e){
    var data = e.data.data;
    var data1 = data[0];
    var someData = data[1];
    // do stuff with the data...
}

和另一种方法:

$(function(){
    $('#myId').bind('change',{"data1":"data1","someData":"some data"}, regularJSfunc);
});

然后你可以像这样访问数据:

function regularJSfunc(e){
    var data1 = e.data.data1;
    var someData = e.data.someData;
    // do stuff with the data...
}

相关问题