#javascript #loops #variables #text
#язык JavaScript #петли #переменные #текст
Вопрос:
Я хочу включить в цикл следующие переменные идентификатора: e1, e2 и т.д.
Каков правильный синтаксис для обработки элементов ‘#e’ i и ‘#e’ i, чтобы избежать написания нескольких функций, например : $(document).on('change', '#e1', function() {
и var exp = 'e1';
PS: В настоящее время приведенная ниже функция изменения не запускается.
for (var i = 0; i lt; 10; i ) { $(document).ready(function() { $(document).on('change', '#e' i, function() { if ($("#e" i).is(":checked")) { var chk = $('#e' i).val(); var exp = 'e' i; } else { chk = 0 ; var exp = 'e' i; } $.ajax({ url: "modify.php", method: "POST", data: {check: chk, experience: exp }, }); }); }) ; }
Комментарии:
1. Не используйте динамические идентификаторы (никогда, не только для решения этой проблемы). Вместо этого используйте общие классы, чтобы затем вы могли делегировать событие всем элементам, соответствующим определенному классу.
Ответ №1:
Вы усложняете свою жизнь и слишком усложняете свой код. Рассмотрим этот подход, в котором используется имя класса, а не динамические идентификаторы.
$(document).ready(function() { $('body').on('change', '.changeable', function() { let data = { check: $(this).is(":checked") ? $(this).val() : 0, experience: $(this).data('ref') } return console.log(data); $.ajax({ url: "modify.php", method: "POST", data: data, }); }); });
lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"gt;lt;/scriptgt; lt;input type='checkbox' data-ref="e1" class="changeable" value='val1' /gt; lt;input type='checkbox' data-ref="e2" class="changeable" value='val2' /gt; lt;input type='checkbox' data-ref="e3" class="changeable" value='val3' /gt;
Комментарии:
1. В точку. Спасибо! Королевский и @CertainPerformance