如何使用id获取特定兄弟元素的值

时间:2011-08-17 10:11:45

标签: jquery siblings

我想使用id获取特定兄弟元素的值,我在运行时构建表单,并且有许多元素具有相同的id但在不同的分区中。我试着用 $(本).siblings( “#BillNo”)VAL()。 $(本).prev( “#BillNo”)VAL()。 但都返回未定义的值

此代码在运行时:佣金

<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 个答案:

答案 0 :(得分:7)

$('#BillNo', $(this).closest("div.bill")).val()

这限制了#BillNo父div的搜索。这是一个demo


顺便说一句,你应该重新考虑你的HTML。 id should ideally be unique values。来自the HTML4 specs

  

id = 名称[CS]

     
    

此属性为元素指定名称。该名称在文档中必须是唯一的。

  

来自HTML5 specs

  

id属性指定其元素的唯一标识符(ID)。该值必须在元素home subtree中的所有ID中唯一,并且必须至少包含一个字符。该值不得包含任何空格字符。

例如,您可以使用类来区分不同的输入。定位它们同样容易。例如http://jsfiddle.net/HxtfP/1/

或者,只需省略id并使用name属性进行定位:http://jsfiddle.net/HxtfP/2/

答案 1 :(得分:1)

试试这个,但这不是很好的代码风格。

$(document).ready(function() {
   $("input[name='addBillDetails']").live('click',function(){
        alert(  $(this).parent().parent().find('#BillNo').val()  );
    });
});

答案 2 :(得分:1)

为了让您的生活轻松,我建议您只需在这些字段中添加billNo类,并尽可能使用该类作为选择器。

否则:

$('#BillNo', $(this).parents(".bill")).val()

答案 3 :(得分:0)

尝试:

$(this).parentsUntil(".bill").find("#BillNo").val();