我点击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。
答案 0 :(得分:31)
当你.click()孩子input
时,事件会冒泡并重新触发li
的click()。您需要在input
中添加.click()并在其中执行event.preventBubble=true;
,否则只需设置checked属性而不是click()
。
答案 1 :(得分:11)
是的,这是冒泡的事件。事件泡到李
你必须这样做:
$('li').click( function(e){
if($(e.target).is('li')){
$('li.selected').removeClass('selected');
$(this).addClass('selected');
$(this).children("input[type=radio]").click();
}
});
不要在下面添加更多活动,这很麻烦
答案 2 :(得分:1)
以防这有助于任何人,这条消息可能会出于各种原因而出现,正如其他贡献者所描述的那样,这可能是偶数泡沫的情况。但对我来说,这是我的代码中的一个错误,导致一个永无止境的函数调用。一个函数正在调用自己,它再次调用自己,换句话说 - 永远不会结束递归。
所以,只需检查你的代码,看看是否存在jQuery陷入调用某个块的永无止境的循环的情况。
答案 3 :(得分:0)
作为一般答案 - 问题似乎是jquery有太多工作要做 - 即循环遍历元素等我遇到了这个问题,当我在firebug中检查页面时,有太多元素让我期待jquery解决。
在firefox Javascript调试器中,您可以点击>在错误旁边,它将为您提供有关触发它的更多详细信息。