Javascript 如何在jQuery中使用参数调用常规JS函数?

Javascript 如何在jQuery中使用参数调用常规JS函数?,javascript,javascript-events,jquery,Javascript,Javascript Events,Jquery,除了我下面使用的方法外,还有其他方法可以在传递参数的情况下运行常规JS函数吗? 这似乎是多余的使用途中的功能来做这件事 function regularJSfunc(param1,param2) { // do stuff } $(document).ready(function(){ $('#myId').change(function(){ regularJSfunc('data1','data2'); }); } 使用.bind事件似乎更好,但我不确定如何访问

除了我下面使用的方法外,还有其他方法可以在传递参数的情况下运行常规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);
}

在第二个示例中,数据需要是
映射

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

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

以下是您试图做的:

$(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 regularJSfunc(e){
    var data1 = e.data.data1;
    var someData = e.data.someData;
    // do stuff with the data...
}

以及另一种方法:

$(function(){
    $('#myId').bind('change',{"data1":"data1","someData":"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 regularJSfunc(e){
    var data1 = e.data.data1;
    var someData = e.data.someData;
    // do stuff with the data...
}

除了使用
bind()
和事件属性之外,您还可以使用:

(Prototype.js内置了此扩展。)

然后你的代码看起来像

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

接收一个
函数
对象,它们将使用一个参数调用该对象,即。如果您想要传递自己的参数,那么您可以选择传递一个中间函数,该函数将使用您想要的参数调用最终函数


您可以通过传递匿名函数来实现这种效果,就像您在工作示例中提供的那样。这也是从jQuery事件绑定调用带有自定义参数的常规函数的标准方法(标准意思是我看到每个人都在做的事情)。

。我指定了map,所以任何有JS基本知识的人都应该在修复后学习到它。+1。JS中没有像Java中那样的“地图”;虽然JS的“对象”起了作用。因此,任何具有Java基本知识的人都应该学习它?这个答案行不通吗?当然,它没有部分函数应用技术那么聪明…但它应该能工作…对吗?我认为这是最好的答案,但没有使用它。使用map会带来额外的开销,这是不可接受的,因为regularJSfunc()被多个源使用。