Выбор jQuery с динамическим идентификатором
У меня есть форма, которая динамически генерируется и имеет динамически генерируемый id (и потенциально классы). Формы одни и те же, но у них есть связанный идентификатор до конца.
Как я могу выбрать каждый набор входов и применить код к каждому?
Я экспериментировал с $('input [id ^ = @id_airline_for_]'), но не мог заставить его летать. Я подозреваю, что упускаю некоторые фундаментальные знания jQuery, которые удерживают меня, так как я уверен, что это общая проблема с динамическими формами.
<form method='POST'>
<label for="id_airline_for_8">Airline</label>:
<input id="id_airline_for_8" class="arrival_transfer_toggle_8" type="text" maxlength="30" name="airline_for_8"/>
<label for="id_flight_number_for_8">Flight Number</label>:
<input id="id_flight_number_for_8" class="arrival_transfer_toggle_8" type="text" maxlength="30" name="flight_number_for_8"/>
<label for="id_airline_for_17">Airline</label>:
<input id="id_airline_for_17" class="arrival_transfer_toggle_17" type="text" maxlength="30" name="airline_for_17"/>
<label for="id_flight_number_for_17">Flight Number</label>:
<input id="id_flight_number_for_17" class="arrival_transfer_toggle_17" type="text" maxlength="30" name="flight_number_for_17"/>
-- snip --
</form>
EDIT: мне нужно обновить, что я хочу, чтобы иметь возможность выполнять некоторые действия при щелчке по вводу, но только для классов с соответствующим идентификатором в конце.
Чтобы упростить, скажем, я хочу, чтобы все входы с совпадающим идентификатором в конце #id исчезали при щелчке (только для аргументов).
Ответы
Ответ 1
$("input[id^='id_airline_for_']").each(function() {
var id = parseInt(this.id.replace("id_airline_for_", ""), 10);
var airline = $("#id_airline_for_" + id);
var flightNumber = $("#id_flight_number_for_" + id);
// do stuff with airline and flightNumber <input>s
});
Ответ 2
Вы можете использовать $("input#id_airline_for" + id)
(где id
- ваш номер, например, 8), но он будет быстрее, если вы отпустите имя тега и просто используйте:
$("#id_airline_for" + id);
Ответ 3
Ниже вы получите все входы, содержащие id_airline_for
в их имени.
$("input[id^='id_airline_for']")
Если вам нужно сделать это на основе каждой формы, вы захотите предоставить каждой форме свой собственный идентификатор и выбрать их в группах таким образом.
$("#formJetBlue input[id^='id_airline_for']")
$("#formNwa input[id^='id_airline_for']")
$("#formOceanic input[id^='id_airline_for']")
Ответ 4
Я не думаю, что вы должны использовать знак @, и вам не хватает некоторых цитат:
Вместо этого:
$ ( 'Вход [ID = @id_airline_for _]')
попробуйте следующее:
$ ( "Вход [ID = 'id_airline_for _']" )
Смотрите также:
http://docs.jquery.com/Selectors/attributeStartsWith#attributevalue
Ответ 5
Выбирает элементы с указанным атрибутом со значением, содержащим заданную подстроку
$('input[id *= id_airline_for]').attr('checked', headerChecked);
он выберет все элементы, содержащие строку "id_airline_for" в атрибуте "id"