我想使用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>
答案 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();