Gil*_*lit 2 jquery events binding
我正在调用下面的第一个函数,将第二个函数绑定到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 });
}
Run Code Online (Sandbox Code Playgroud)
您需要传递一个将在单击事件发生时调用的函数。按照您的方式,您立即调用该函数,并告诉 JQuery 调用该函数返回的任何值。
$(LinkName).bind("click", function () { ExpandFrame(LinkName, i); } );
Run Code Online (Sandbox Code Playgroud)
问题在于.bind()的第二个参数应该是一个函数,但是您正在调用一个函数。JQuery评估函数调用,并尝试将结果绑定到click事件。
如建议的那样,通过将函数调用包装在匿名函数中,javascript引擎会将包装函数绑定到事件,而不评估其中的内容。
$(LinkName).click( function () { ExpandFrame(LinkName, i) } );
Run Code Online (Sandbox Code Playgroud)
意识到使用以下内容等同于上面的代码,可能会有所帮助。
$(LinkName).click( function () { ExpandFrame(LinkName, i) }() );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2956 次 |
| 最近记录: |