0

在使用 jQuery 将函数分配给 IE 7 中按钮的单击事件时,我遇到了问题。类似下面的东西在 Opera 中可以正常工作,但在 IE 中会产生无限循环:

function updateIndputFields(index, id) {
   $("#reloadBtn").click(function(){ updateIndputFields(index, id) });
}

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

4

3 回答 3

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>

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

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

于 2008-11-24T22:54:54.663 回答
1

或者只是使用.one来绑定事件

于 2008-11-25T04:32:36.400 回答
0

在绑定之前尝试取消绑定事件。

于 2008-11-24T22:38:36.113 回答