使用.on()将变量传递给函数

时间:2014-10-28 21:58:19

标签: javascript jquery arguments

我有一个带有自己类的文本输入字段:.my_ids。我正在尝试用jquery编写一个脚本,这样每次输入改变时,它都会调用一个特定的函数。如果我不尝试将变量传递给函数,这很容易:

$(document).on('change','.my_ids', testfunc);
function testfunc(){
    alert("good");
}

每次输入改变时,该功能都会发出警报;工作得很好。

然而如果我尝试将变量传递给警报函数,如下所示:

$(document).on('change','.my_ids', testfunc("hereismyvariable"));
function testfunc(myvariable){
    alert(myvariable);
}

它在文档加载时发送警报,然后在输入更改时不发出警报。我可能会缺少什么?

3 个答案:

答案 0 :(得分:2)

这里传递一个函数: $(document).on('change','.my_ids', testfunc);
在这里传递函数的返回值:$(document).on('change','.my_ids', testfunc("hereismyvariable"));
因为testfunc("hereismyvariable") = undefined(无返回值),所以添加一个带有未定义函数的事件处理程序。

答案 1 :(得分:1)

你会这样做

$(document).on('change','.my_ids', function() {
  testfunc("hereismyvariable");
});

或者你可以这样做

$(document).on('change','.my_ids', testfunc("hereismyvariable"));

function testfunc(myvariable){
  return function() {
    alert(myvariable);
  }
}

答案 2 :(得分:1)

()运算符调用函数,因此函数的返回值被设置为处理程序,这似乎不是你想要的。其他答案提出了几个解决方另一种选择是使用data参数:

$(document).on('change', '.my_ids', "hereismyvariable", testfunc);

function testfunc(event) {
    console.log(event.data); // "hereismyvariable"
}

data参数可以是任何东西。 data对象的event属性是指传递的值。