jQuery太多的递归

时间:2010-02-23 17:12:23

标签: jquery jquery-ui recursion

我点击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。

4 个答案:

答案 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调试器中,您可以点击>在错误旁边,它将为您提供有关触发它的更多详细信息。