1

我有一个monitoring()在这个小提琴中调用的函数。我的问题是,如果我想调用该函数,我可以简单地这样做吗?

$('#status_table #monitor_'+rowID).change(monitoring(rowID));

我的逻辑是,当复选框的状态(#monitor_'+rowID是复选框 ID)发生更改时,将调用该函数。

因为我想知道是否正在调用该函数,所以我执行如下追加:

$('#test').append(fbType + fbNum);

但它没有在 div #test 中显示 fbType 和 fbNum 的任何内容。有人可以指出我应该如何调用该函数或纠正我在该代码/逻辑中的错误吗?

4

4 回答 4

2

change期望对函数的引用,而您当前正在调用它并使用它的返回值作为参数来change- 不是您想要的,因为它不返回函数。

一种选择是创建一个函数生成器,它接受行 ID 并将返回值用作 的参数change,大致如下:

function createMonitor(rowId) {
    return function() {
        // Do something with rowId
    };
};

$('#status_table #monitor_'+rowID).change(createMonitor(rowID));

在不知道从哪里来rowID的情况下,很难知道这是否是最好的方法。

于 2013-05-02T02:12:51.190 回答
2

您当前的代码将call函数monitoring并将其返回值绑定为事件处理程序,这可能不是您需要的。

您可以改为:

$('#status_table #monitor_'+rowID).change(function() {
    monitoring(rowID);
});
于 2013-05-02T02:20:47.650 回答
0

啊闭包的力量:

$('#status_table #monitor_'+rowID).change(function() { monitoring(rowID) });

还有比这更多的内容,因为您可能需要在某处实际传递 rowID;看着你的小提琴,乍一看好像你想把这个片段放在函数addText中,在那里你计算一个rowID。

更正小提琴(使用 rowID):http: //jsfiddle.net/EVW4S/

似乎此代码存在更多问题...可能有助于调试的一个提示:console.debug有用(而不是使用alert()或更改内容)

于 2013-05-02T02:21:37.077 回答
0

然后在某处创建一个按钮以触发该功能。您也可以更好地控制该功能。

于 2013-05-08T02:42:09.420 回答