1

我想使用 id 获取特定同级元素的值,我在运行时构建表单,并且有许多元素具有相同的 id 但在不同的部门。我尝试使用 $(this).siblings("#BillNo").val(); $(this).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

4 回答 4

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

这限制了#BillNo对父 div 的搜索。这是一个演示


顺便说一句,您应该重新考虑您的 HTML。id理想情况下应该是唯一值。从HTML4 规范

id =名称 [CS]

此属性为元素分配名称。此名称在文档中必须是唯一的。

HTML5 规范

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

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

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

于 2011-08-17T10:32:33.313 回答
1

Try this, but it`s not very goods code style.

$(document).ready(function() {
   $("input[name='addBillDetails']").live('click',function(){
        alert(  $(this).parent().parent().find('#BillNo').val()  );
    });
});
于 2011-08-17T10:28:44.987 回答
1

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

否则:

$('#BillNo', $(this).parents(".bill")).val()
于 2011-08-17T10:36:02.020 回答
0

尝试:

$(this).parentsUntil(".bill").find("#BillNo").val();
于 2011-08-17T10:14:54.410 回答