У меня есть .each
цикл вроде этого:Нажмите событие для каждого цикла срабатывает несколько раз
$('.form-base-subscriptions input').each(function (index, value) {
var uniqueId = $(this).attr('id'),
uniqueId = uniqueId.substring(uniqueId.lastIndexOf('_')),
$parent = $(this).parent(),
$content = $parent.html();
$content = $content.split('~'),
input = $content[0],
amount = $content[4],
var $toggle = $parent.find('.form-toggle'),
$checkbox = $toggle.find('input');
$toggle.on('click', function() {
$('.form-base-subscriptions .form-toggle').removeClass('active');
$('.form-base-subscriptions input').prop('checked', false);
$toggle.addClass('active');
$checkbox.prop('checked', true);
var currentId = $(this).attr("id");
if (currentId == "toggle_151" || currentId == "toggle_170") {
amount = '1.50';
} else {
console.log('check');
amount = '0';
}
$('#toggle_153 input').attr('data-amount', amount);
$('#toggle_153 span').html(amount);
//updateWellnessPrice();
updateSubscriptionAmount();
});
Как я вызвать этот onCLick event
только один раз за клик? Теперь он запускается дважды за клик.
переместите клик ev из цикла '.each'. Прямо сейчас вы регистрируете событие click несколько раз из-за цикла. – Krishna
Возможно, это не связано, но вы, кажется, бросаете переменные в глобальную область из-за изгоев ';' (или, скорее всего, из-за изгоев ',' s, и вы не объявляете все переменные в верхней части). – Sumurai8
Необходимо увидеть соответствующий html - в частности, есть один '.form-toggle' (как следует из названия и ошибки) или по одному на каждый вход (как следует из кода). Если есть только один, вы хотите обеспечить '$ toggle.on ('click'' вызывается только один раз. –