как получить значение определенного элемента родного брата, используя идентификатор - PullRequest
1 голос
/ 17 августа 2011

Я хочу получить значение определенного элемента-брата, используя идентификатор, я создаю форму во время выполнения, и многие элементы имеют один и тот же идентификатор, но в разных подразделениях.Я пытался использовать $ (this) .siblings ("# BillNo"). Val ();$ (Это) .prev ( "# BillNo") Вал ().но оба возвращают неопределенное значение

этот код во время выполнения: комиссия

<div id="bill1" class="bill hide withPadding">
    <h3>Bill 1</h3>
    <span>
    <label>Bill no</label>
    <input type="text" name="billNo" class="textField" id="BillNo"/>
    </span>
    <span>
    <label>Bill total</label>
    <input type="text" name="billTotal" class="textField" id="BillTotal"/>
    </span>
    <span>
    <input type="button" name="addBillDetails" value="Add bill items" id="addBillDetails"/>
    </span>
</div>  

<div id="bill2" class="bill hide withPadding">
    <h3>Bill 2</h3>
    <span>
    <label>Bill no</label>
    <input type="text" name="billNo" class="textField" id="BillNo"/>
    </span>
    <span>
    <label>Bill total</label>
    <input type="text" name="billTotal" class="textField" id="BillTotal"/>
    </span>
    <span>
    <input type="button" name="addBillDetails" value="Add bill items" id="addBillDetails"/>
    </span>
</div>  

<script type="text/javascript">
$(document).ready(function() {
   $("input#addBillDetails").live('click',function(){
        alert($(this).siblings("#BillNo").val());
        alert($(this).prev("#BillNo").val());

        });
}
</script>

Ответы [ 4 ]

7 голосов
/ 17 августа 2011
$('#BillNo', $(this).closest("div.bill")).val()

Это ограничивает поиск #BillNo родительского div.Вот демоверсия .


. Кроме того, вам следует пересмотреть свой HTML.id в идеале должно быть уникальным значением .Начиная с спецификации HTML4 :

id = name [CS]

Этот атрибут присваиваетимя элемента.Это имя должно быть уникальным в документе.

И из спецификаций HTML5 :

Атрибут id определяет * 1032 его элемента* уникальный идентификатор (ID) .Значение должно быть уникальным среди всех идентификаторов в home поддереве элемента и должно содержать хотя бы один символ.Значение не должно содержать пробелов.

Вы можете, например, использовать классы для различения различных входных данных.Было бы так же легко нацелиться на них.Например, http://jsfiddle.net/HxtfP/1/.

В качестве альтернативы, просто опустите id и используйте для таргетинга атрибут name: http://jsfiddle.net/HxtfP/2/

1 голос
/ 17 августа 2011

Чтобы упростить вашу жизнь, я предлагаю вам просто добавить в эти поля класс billNo и использовать этот класс как селектор, ЕСЛИ это возможно.

В противном случае:

$('#BillNo', $(this).parents(".bill")).val()
1 голос
/ 17 августа 2011

Попробуйте, но это не очень стиль кода товара.

$(document).ready(function() {
   $("input[name='addBillDetails']").live('click',function(){
        alert(  $(this).parent().parent().find('#BillNo').val()  );
    });
});
0 голосов
/ 17 августа 2011

Попробуйте:

$(this).parentsUntil(".bill").find("#BillNo").val();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...