我有一个名为monitoring()
的函数,如此fiddle。我的问题是,如果我想调用该函数,我可以简单地执行此操作吗?
$('#status_table #monitor_'+rowID).change(monitoring(rowID));
我的逻辑是,当复选框的状态(#monitor_'+rowID
是复选框ID)发生变化时,将调用该函数。
由于我想知道是否正在调用该函数,我会执行以下操作:
$('#test').append(fbType + fbNum);
但它没有为div #test中的fbType和fbNum显示任何内容。 有人能指出我应该如何调用该函数或纠正我在该代码/逻辑中的错误?
答案 0 :(得分:2)
change
期望引用到一个函数,而你当前正在调用并使用其返回值作为change
的参数 - 不是你想要的,因为它不会返回一个函数。
一个选项是创建一个函数生成器,它接受行ID并使用返回值作为change
的参数,粗略地说:
function createMonitor(rowId) {
return function() {
// Do something with rowId
};
};
$('#status_table #monitor_'+rowID).change(createMonitor(rowID));
在不知道rowID
来自何处的情况下,很难知道这是否是最佳方法。
答案 1 :(得分:2)
您当前的代码将call
函数monitoring
和将其返回值绑定为事件处理程序,这可能不是您所需要的。
你可以这样做:
$('#status_table #monitor_'+rowID).change(function() {
monitoring(rowID);
});
答案 2 :(得分:0)
关闭的力量啊:
$('#status_table #monitor_'+rowID).change(function() { monitoring(rowID) });
它会比这更多,因为你可能需要在某处传递rowID;看着你的小提琴,乍一看好像你想把这个片段放在函数addText
中,你计算一个rowID。
更正了小提琴(使用了rowID): http://jsfiddle.net/EVW4S/
似乎此代码存在更多问题...
一个可能有助于调试的提示:console.debug
非常有用(而不是使用alert()
或更改内容)
答案 3 :(得分:0)
在某处创建一个按钮以触发该功能。您也可以更好地控制该功能。