2010-07-20 62 views
-2

大家好。我有一个小问题。。在jquery中点击函数总是得到一个无名函数?

我有一个功能。让我们把它叫做:

function rowClick() 
{ 

} 

无论如何,问题是:

我如何可以绑定此功能click事件没有它被称为?

我的意思是,如果我这样做:

$("#holder").click (function(){ rowClick(); }); 

同时注册到Click事件的rowClick函数被调用。

无论如何,我明白为什么会发生这种情况。我只是不明白我如何以一种不会被调用的方式将该函数绑定到事件上。

谢谢。

+1

它被调用,因为你把'()'放在它后面,意思是“调用左边的函数”。 – 2010-07-20 14:28:18

+1

但是,这应该只发生在匿名函数被调用时,而这又应该只发生在点击事件触发时。我怀疑OP已经在他的帖子中清除了代码,从而掩盖了真正的问题。 – belugabob 2010-07-20 14:33:26

+0

在您发布的代码中,注册click事件时rowClick不会被调用 - 它只在实际发生点击时被调用。这个问题最初是否有这样的代码:'$(“#holder”)。click(rowClick());'' – Kip 2010-07-20 19:12:58

回答

3

从函数名称中删除功能()和括号,例如:

$("#holder").click(rowClick); 
+0

忘了提及我有参数我需要传递给该功能.. 我该怎么做,没有parentetis ? – 2010-07-20 14:27:57

+0

创建第二个无参数函数,用正确的参数调用另一个函数。 – 2010-07-20 14:31:57

+0

然后,你应该恢复到匿名函数技术 - 这应该工作。你能发布更多的周边代码吗? – belugabob 2010-07-20 14:34:10

0

......怎么

$("#holder").click (rowClick); 

...虽然匿名函数不应被调用(因此,也不应该rowClick),直到点击事件发生。

+0

大声笑这就是我认为,但现在当你说它时,我发现我有一个错误。 由于某种原因,当我后来点击一行它被触发几次不只一次... – 2010-07-20 14:31:21

0

你只需要传递一个函数引用作为参数。这并不意味着。

呼叫

$("#holder").click (rowClick); 

会工作得很好。不要忘了与event parameter重新设计rowClick功能:

function rowClick (event) { 
    alert(event.target.id); 
} 

该参数自动传递,并可以在回调函数中进行访问。

相关问题