jQuery回调过早发生

Mor*_*sen 0 javascript jquery internet-explorer callback

在使用jQuery为IE 7中的按钮的click事件分配函数时,我遇到了问题.类似下面的东西在Opera中运行正常,但在IE中产生无限循环:

function updateIndputFields(index, id) {
   $("#reloadBtn").click(function(){ updateIndputFields(index, id) });
}
Run Code Online (Sandbox Code Playgroud)

据我了解,无限循环不会是这种情况下的预期行为.但我是jQuery的新手,所以也许我错过了一些东西.无论如何,我应该怎么做才能使reloadBtn按钮的click事件在IE中设置为'updateIndputFields(index,id)'?

rin*_*ter 6

我认为你的答案的关键在于解除你已经绑定到click事件的事件.我在IE上使用过这个,如果我理解你要做什么,它似乎做你需要的:

<script type="text/javascript">
function updateIndputFields(index, id) {
$('#output').append('<p>' + index + ' : ' + id + '</p>');
$('#reloadBtn').unbind('click');
$("#reloadBtn").click(function(){ updateIndputFields(index, id) });
}
</script>
<p><a href="#" id="reloadBtn">reload</a></p>
<p><a href="#" onclick="updateIndputFields(1,2);return false;">start</a></p>
<div id="output"></div>
Run Code Online (Sandbox Code Playgroud)

每次单击都应将传递的参数输出一次到输出div中.

如果您未取消绑定最初​​分配的单击事件,则它将保持存在,并且每次单击该事件时都会将重复的单击事件处理程序附加到该事件.即使在Firefox中,也没有取消绑定事件会产生一个有趣的递归情况.