具有动态id的jQuery选择

时间:2009-01-02 23:09:56

标签: javascript jquery

我有一个动态生成的表单,并且具有动态生成的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的所有输入在单击一个时消失(仅为了参数)。

5 个答案:

答案 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'字符串的所有元素