jQuery слишком много рекурсии

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

31
задан Adam Crossland 23 February 2010 в 17:14
поделиться

2 ответа

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

32
ответ дан 27 November 2019 в 22:31
поделиться

Да, это всплывающее событие. Событие всплывает до li

Вам просто нужно сделать следующее:

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

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

11
ответ дан 27 November 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: