#jquery #input
#jquery #ввод
Вопрос:
У меня есть несколько входных данных с разными идентификаторами, и я ищу способ найти идентификатор каждого из них. Я сделал здесь ручку, но, в основном, вот то, что я пробовал до сих пор.
// DISPLAYS ALL ID's
var id = [];
$('input').each(function() {
id.push($(this).attr('id'))
})
// DISPLAYS THE FIRST ID
var ids = $('.content div').find('input').attr('id');
// DISPLAYS THE FIRST ID
var i = $('input').get(0).id
// APPEND LABEL
var customlabel = $('<label>input ID = #' i '</label>');
$('.content div').append(customlabel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="content">
<div><input type='radio' id="one" /></div>
<div><input type='radio' id="two" /></div>
</div>
<div class="content">
<div><input type='radio' id="three" /></div>
<div><input type='radio' id="four" /></div>
</div>
<div class="content">
<div><input type='radio' id="five" /></div>
<div><input type='radio' id="six" /></div>
</div>
Моя цель — просто получить идентификатор каждого ввода отдельно. Но с этой переменной i я получаю только идентификатор первого ввода («один» в каждой строке). Когда я использую .each(), все идентификаторы отображаются вместе (один, два, три, четыре, пять, шесть).
var id=[];
$('input').each(function(){
id.push($(this).attr('id'))
})
Мои знания jQuery ограничены, и я уже потратил несколько часов, пробуя различные решения, найденные в stack, поэтому буду признателен за любую помощь.
Комментарии:
1. Каков ожидаемый результат? Как должна выглядеть разметка в конце?
2. Из вашего примера похоже
<label>
, что это неправильный элемент. Предполагается, что он должен быть обернут вокруг<input />
элемента или связан с<input />
элементом через егоfor="..."
атрибут3. Да, метка связана с помощью атрибута «for =»», но я хотел сделать этот вопрос как можно более простым. У меня пока есть 2 рабочих решения (от Пита и Тхонга), так что спасибо за вашу помощь.
Ответ №1:
Вот вы где:
$(".content div").each(function(){
let id = $("input", this).attr("id");
$(this).append("<label>" id "</label>");
});
Комментарии:
1. Извините, но я не понимаю, почему, когда я использовал .each(), он отображал все идентификаторы в каждой строке. В чем разница с вашим сниппетом? В любом случае, ваше решение отлично работает, так что большое спасибо.
2. вы имеете в виду это?:<br/> ** var id=[]; $(‘input’).each(function(){ id.push($(this).attr(‘id’)) })**<br/> ваше кодовое слово вот так:<br/> **#1: объявить пустой массив с именем id **<br/> **#2: для каждого ввода помещайте идентификатор ввода в конец массива идентификаторов **<br/> вот почему они выводятся одновременно — надеюсьэто понятно.
3. Хорошо, я понял. Еще раз спасибо за вашу помощь. Очень признателен.
Ответ №2:
Если вы просто пытаетесь добавить метку идентификатора после ввода, вам нужно сделать это в каждом цикле (вместо того, чтобы пытаться поместить их все в массив и добавить это после завершения каждого)
$('input').each((index, input) => {
const $thisInput = $(input); // current input
$thisInput.after(`<label for="${input.id}">input id = #${input.id}</label>`); // add a label after the current input
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="content">
<div><input type='radio' id="one" /></div>
<div><input type='radio' id="two" /></div>
</div>
<div class="content">
<div><input type='radio' id="three" /></div>
<div><input type='radio' id="four" /></div>
</div>
<div class="content">
<div><input type='radio' id="five" /></div>
<div><input type='radio' id="six" /></div>
</div>
Комментарии:
1. Да, это работает, большое спасибо за вашу помощь. Теперь мне придется выбирать между вашим ответом и ответом Thong, потому что оба работают нормально.
Ответ №3:
Выполните итерацию по каждому из входных данных, используя $.each
, затем create a DOM element
label
и найдите parent
текущий входной элемент и append
вновь созданную метку в нем.
$(function() {
$.each($('input[type="radio"]'), function(key) {
const label = $('<label/>').text(`input ID = #${key 1}`);
$(this).parent().append(label);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="content">
<div><input type='radio' id="one" /></div>
<div><input type='radio' id="two" /></div>
</div>
<div class="content">
<div><input type='radio' id="three" /></div>
<div><input type='radio' id="four" /></div>
</div>
<div class="content">
<div><input type='radio' id="five" /></div>
<div><input type='radio' id="six" /></div>
</div>