触发事件的jQuery绑定事件

我正在调用下面的第一个函数将第二个函数绑定到onClick事件。

奇怪的是,调用第一个函数会导致触发第二个函数。

第一个函数中的LinkName参数是表td元素的名称 – 可能不相关。

function EnableExpand(LinkName, i) { $(LinkName).addClass("link-text"); $(LinkName).bind("onclick", ExpandFrame(LinkName, i)); } function ExpandFrame(lName, i) { $("#mapFrame" + i).attr({ height: 500, width: 800 }); } 

问题是.bind()的第二个参数应该是一个函数,但是你正在调用一个函数。 JQuery评估函数调用并尝试将结果绑定到click事件。

通过按照建议将函数调用包装在匿名函数中,javascript引擎将包装器函数绑定到事件,而不是评估其中的内容。

 $(LinkName).click( function () { ExpandFrame(LinkName, i) } ); 

了解使用以下内容等同于上面的代码可能会有所帮助。

 $(LinkName).click( function () { ExpandFrame(LinkName, i) }() ); 

您需要传递将在单击事件发生时调用的函数。 你拥有它的方式,你立即调用函数,并告诉JQuery调用从该函数返回的任何值。

 $(LinkName).bind("click", function () { ExpandFrame(LinkName, i); } ); 

你不需要绑定。 .click会做的。

 $(LinkName).click( function () { ExpandFrame(LinkName, i) } );