JQuery слишком много рекурсии - PullRequest
31 голосов
/ 23 февраля 2010

Я пытаюсь выбрать радио-блок, когда я нажимаю 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 ]

31 голосов
/ 23 февраля 2010

когда вы .click () дочерний элемент input, событие всплывает и повторно запускает щелчок li (). Вам нужно добавить .click () к input и сделать event.preventBubble=true; в нем, или просто установить свойство selected вместо click().

11 голосов
/ 23 февраля 2010

Да, это пузыри событий. Событие пузырьков до li

Вы просто должны сделать это:

$('li').click( function(e){
  if($(e.target).is('li')){
     $('li.selected').removeClass('selected');
     $(this).addClass('selected');
     $(this).children("input[type=radio]").click();
  }
});

Не добавляйте больше событий ниже, это грязно

1 голос
/ 25 сентября 2016

На всякий случай, если это кому-нибудь поможет, это сообщение может отображаться по разным причинам, как описано другими участниками, это может быть случай даже пузыря. Но для меня это была ошибка в моем коде, которая привела к бесконечному вызову функции. Функция вызывала сама себя, то есть снова вызывала себя, другими словами, никогда не прекращала рекурсию.

Итак, просто проверьте ваш код и посмотрите, есть ли ситуация, когда jQuery попадает в бесконечный цикл вызова некоторого блока.

0 голосов
/ 22 марта 2016

Как общий ответ - проблема в том, что в jquery слишком много работы - то есть циклическое прохождение элементов и т. Д. У меня была эта проблема, и когда я проверял страницу в firebug, было слишком много элементов, которые я ожидал jquery решать

В Firefox Javascript отладчике вы можете нажать> рядом с ошибкой, и она даст вам более подробную информацию о том, что ее вызывает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...