我有一个动态生成的表单,并且具有动态生成的id(以及可能的类)。表格是相同的,但他们在最后加上相关的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>
编辑:我应该更新,我希望能够在单击输入时执行某些操作,但仅限于最后匹配id的类。
为了简单起见,让我说我希望#id末尾带有匹配id的所有输入在单击一个时消失(仅为了参数)。
答案 0 :(得分:36)
$("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
});
答案 1 :(得分:3)
您可以使用$("input#id_airline_for" + id)
(其中id
是您的号码,例如8),但如果您删除标记名称并使用以下内容会更快:
$("#id_airline_for" + id);
答案 2 :(得分:2)
以下内容将为您提供名称中包含id_airline_for
的所有输入。
$("input[id^='id_airline_for']")
如果您需要在每个表单的基础上执行此操作,您将需要为每个表单提供自己的ID,并以这种方式分组选择它们。
$("#formJetBlue input[id^='id_airline_for']")
$("#formNwa input[id^='id_airline_for']")
$("#formOceanic input[id^='id_airline_for']")
答案 3 :(得分:2)
我认为你不应该使用@符号,而且你错过了一些引号:
而不是: $( '输入[ID ^ = @ _ id_airline_for]')
试试这个: $( “输入[ID ^ = 'id_airline_for _']”)
也见到这一点:
http://docs.jquery.com/Selectors/attributeStartsWith#attributevalue
答案 4 :(得分:0)
选择具有指定属性的元素,其值包含给定的子字符串
$('input[id *= id_airline_for]').attr('checked', headerChecked);
它将在'id'属性中选择包含'id_airline_for'字符串的所有元素