我在使用jQuery为IE 7中的按钮的click事件分配函数时遇到问题。类似下面的东西在Opera中工作正常,但在IE中产生无限循环:
function updateIndputFields(index, id) {
$("#reloadBtn").click(function(){ updateIndputFields(index, id) });
}
据我所知,在这种情况下,无限循环不会是预期的行为。但我是jQuery的新手,所以也许我错过了一些东西。无论如何,我应该怎么做才能使reloadBtn按钮的click事件在IE中设置为'updateIndputFields(index,id)'?
答案 0 :(得分: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中,也没有解除绑定事件会产生一个有趣的递归情况。
答案 1 :(得分:1)
或仅使用.one绑定事件
答案 2 :(得分:0)
在绑定事件之前尝试取消绑定事件。