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

あなたの答えの鍵は、すでにクリックイベントにバインドされているイベントのバインドを解除することにあると思います。私は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 に 1 回だけ出力されます。

最初に割り当てられたクリック イベントのバインドを解除しない場合、イベントはそのまま残り、クリックされるたびに重複したクリック イベント ハンドラーをイベントにアタッチします。Firefox でも、イベントのバインドを解除しないと、興味深い再帰的な状況が発生します。

于 2008-11-24T22:54:54.663 に答える
1

または単に.oneを使用してイベントをバインドします

于 2008-11-25T04:32:36.400 に答える
0

バインドする前に、イベントのバインドを解除してみてください。

于 2008-11-24T22:38:36.113 に答える