我有一个带有自己类的文本输入字段:.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);
}
它在文档加载时发送警报,然后在输入更改时不发出警报。我可能会缺少什么?
答案 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
属性是指传递的值。