Получить часть имени класса от parent и применить к дочернему JQuery - PullRequest
1 голос
/ 13 марта 2011

У меня есть следующее HTML :

<tr class="wiring_details_6-48">
    <td colspan="2"> Wire Type:
        <select name="select_wire_6" onchange="Estimate.select_wire( 6, this.value, 0 );">
            <option value="" selected="">Select wire..</option>
            <option value="1">14/2</option>
            <option value="2">14/4</option>
            <option value="3">16/4</option>
            <option value="4">16/2</option>
            <option value="5">RG6</option>
            <option value="6">CAT5</option>
            <option value="7">RG59</option>
            <option value="8">LVT</option>
            <option value="9">CAT6</option>
            <option value="10">HDMI</option>
            <option value="11">Shielded CAT6</option>
        </select> </td>
    <td colspan="2">Length:
        <input type="text" class="id_wire_length_6" name="wire_length_6" value="0"></td>
    <td colspan="2">Retail Price:
        <input type="text" class="id_wire_retail_6" name="wire_retail_6" value="0"> </td>
    <td colspan="2">
        <input type="hidden" id="wire_id_6" name="wire_id_6" value="0"> </td>
</tr>

Я хочу убедиться, что input - id_wire_length и id_wire_retail связаны с их родителем tr. Это может быть доказано благодаря part-id, который в данном примере является числом 6 в wiring_details и id_wire_length и id_wire_retail.

У меня есть JS :

$('input[class^="id_wire_retail"]').each(function() {
    parts_cents_total += (Money.dollars_to_cents($(this).val()) * $('input[class^="id_wire_length"]').val());
});

Вышеприведенное соответствует части id_wire_detail, а также id_wire_length - но как мне убедиться, что она относится к его родителю,

Итак, я думаю, это сводится к этому:

Как получить номер детали родителя tr (6), а затем убедиться, что вышеуказанный JS соответствует только входным элементам с номером детали tr в них?

1 Ответ

2 голосов
/ 13 марта 2011

Вместо этого:

$('input[class^="id_wire_length"]').val()

... попробуйте это:

$(this).closest('tr').find('input[class^="id_wire_length"]').val()

Это гарантирует, что выбранное вами значение будет "внутри" того же самого <tr>.Предполагая, что структура HTML такая же, как вы написали выше, вам не нужно беспокоиться о соответствии по номеру детали.

...