我試圖選擇一個單選框時,我點擊一個李。但我得到的錯誤「多遞歸」。jQuery太多遞歸
代碼是:
$('li').click(function(){
$('li.selected').removeClass('selected');
$(this).addClass('selected');
$(this).children("input[type=radio]").click();
});
這是使用jQuery 1.4.2和1.7.2的用戶界面。
我試圖選擇一個單選框時,我點擊一個李。但我得到的錯誤「多遞歸」。jQuery太多遞歸
代碼是:
$('li').click(function(){
$('li.selected').removeClass('selected');
$(this).addClass('selected');
$(this).children("input[type=radio]").click();
});
這是使用jQuery 1.4.2和1.7.2的用戶界面。
當你點擊()孩子input
時,事件冒泡並重新觸發li
的click()。您需要將.click()添加到input
,並在其中執行event.preventBubble=true;
,否則只需設置已選中的屬性而不是click()
即可。
是的,這是事件冒泡。事件冒泡李
你只需要做到這一點:
$('li').click(function(e){
if($(e.target).is('li')){
$('li.selected').removeClass('selected');
$(this).addClass('selected');
$(this).children("input[type=radio]").click();
}
});
不要添加下面更多的事件,它的混亂
作爲一個通用的答案 - 這個問題似乎是jQuery有太多的工作要做 - 即循環元素等。我遇到了這個問題,當我檢查螢火蟲中的頁面時,我期望jquery處理的元素太多了。
在Firefox的Javascript調試器中,您可以單擊>旁邊的錯誤,它會給你更多的細節,以觸發它。
爲了防止這種情況對任何人有用,此消息可能出於各種原因顯示,如其他貢獻者所述,這可能是Even bubble的情況。但對我來說,這是我的代碼中的一個錯誤,導致了一個永無止境的函數調用。一個函數正在調用自己,換句話說就是再次調用自己 - 永不結束遞歸。
所以,只要檢查你的代碼,看看是否有這樣一種情況,jQuery陷入了調用某個塊的永無止境的循環。
Very use full ..... – 2011-09-17 10:11:45
is [Break On This Error] ...; d && m.filter(b,a,!0)}},「」:function(a,b,c) {var d,f = e ++,g = x; typeof b ==「string」&&!l ... 引起的同一個事件在這裏描述? – 2012-10-10 17:32:58