У меня есть код, похожий на этот, чтобы проверить, были ли проверены некоторые радиокнопоны. Я использую функцию jaery для каждой функции jQuery, чтобы показать предупреждение, когда я нахожу группу переключателей с одинаковым именем, и ни один из них не был проверен. Когда я нахожу его, я хочу запустить предупреждение и вернуть false, но после того, как будет показано предупреждение, выполнение .each останавливается, но строки после функции .each выполняются (я имею в виду, что выполняется истинное значение).Избегайте выполнения в цикле .each
$(":radio").each(function(){
var name = $(this).attr('name');
var numAnswered = $(":radio").filter('[name='+name+']').filter(":checked").length;
var notAnswered = numAnswered == 0;
if(notAnswered){
alert("Must answer all questions");
return false;
}
});
console.log('still goes here even when alert is fired');
return true;
Как я могу избежать этой ситуации?
Спасибо.
Вы переключаете группу в другом контейнере сортировки? Было бы гораздо эффективнее зацикливаться на этом пути, например '$ (". Container "). Each (...' then check '$ (this) .find (": radio: checked "). Length', –
@Nick Craver Я знаю, что это было бы более эффективно, но я не хочу, чтобы эта функция полагалась на то, как радиокнопки отображаются на html, потому что это может быть изменено позже, и может быть быть больше, чем «радиогруппа» в том же контейнере. – Javi
Пока они находятся в контейнере * some * sort, который вы можете идентифицировать, вы можете сделать его намного эффективнее, даже если вы сделали '$ (" : radio "). ближайший (" div "). each (...)', чтобы сделать его агностиком, например. –