LIをクリックしたときにラジオボックスを選択しようとしています。しかし、「再帰が多すぎます」というエラーが表示されます。
コードは:
$('li').click( function(){
$('li.selected').removeClass('selected');
$(this).addClass('selected');
$(this).children("input[type=radio]").click();
});
これはjQuery 1.4.2とUI 1.7.2を使用しています。
子input
を.click()すると、イベントが発生し、li
のclick()が再トリガーされます。 input
に.click()を追加して_event.preventBubble=true;
_を実行するか、またはclick()
ingの代わりに単にcheckedプロパティを設定する必要があります。
はい、それはイベントバブリングです。李までイベント泡
これを行う必要があります:
$('li').click( function(e){
if($(e.target).is('li')){
$('li.selected').removeClass('selected');
$(this).addClass('selected');
$(this).children("input[type=radio]").click();
}
});
以下にイベントを追加しないでください。乱雑です
これがだれにも役立つ場合に備えて、このメッセージはさまざまな理由で表示されることがあります。他の寄稿者が説明しているように、それはバブルの場合かもしれません。しかし、私にとっては、コードのバグであり、関数呼び出しが終了することはありませんでした。関数が自分自身を呼び出していました。つまり、自分自身を再び呼び出していました。つまり、再帰が終了することはありません。
したがって、コードを調べて、jQueryがブロックを呼び出すという終わりのないループに陥る状況がないかどうかを確認します。
一般的な答えとして-問題は、jqueryが実行する作業が多すぎることです(つまり、要素をループするなど)。この問題があり、Firebugでページを調べたときに、jqueryが取り組むと期待していた要素が多すぎました。
Firefox Javascriptデバッガーでは、エラーの横にある>をクリックすると、エラーの原因について詳細が表示されます。