如何在jquery中调用函数

问题描述 投票:0回答:4

我有一个名为

monitoring()
的函数,如这个 fiddle 中所示。我的问题是,如果我想调用该函数,我可以简单地这样做吗?

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

我的逻辑是,当复选框的状态(

#monitor_'+rowID
是复选框ID)改变时,该函数将被调用。

因为我想知道该函数是否正在被调用,所以我做了如下附加:

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

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

javascript jquery function
4个回答
2
投票

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

一种选择是创建一个函数生成器,它采用行 ID 并使用返回值作为

change
的参数,大致如下:

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

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

如果不知道

rowID
来自哪里,就很难知道这是否是最好的方法。


2
投票

您当前的代码将

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

你可以这样做:

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

0
投票
啊闭包的力量:

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

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

addText

,你可以在其中计算 rowID。

更正的小提琴(使用 rowID ):

http://jsfiddle.net/EVW4S/

这段代码似乎还有更多问题...... 可能有助于调试的一个提示:

console.debug

很有用(而不是使用
alert()
或更改内容)


0
投票
在某处创建一个按钮来触发该功能。您还可以更好地控制该功能。

© www.soinside.com 2019 - 2024. All rights reserved.