2011-08-17 56 views
1

我想用ID的特定同级元素的值的特定同级元素的值,我建立在运行时的形式有很多种元素具有相同的ID,但在不同的部门。我尝试使用 $(this).siblings(“#BillNo”)。val(); $(this).prev(“#BillNo”)。val(); 但都返回未定义值怎样用ID

这个代码在运行时:佣金

<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> 

回答

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/

0

尝试:

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

返回undefined :( – sahar 2011-08-17 10:30:53

1

试试这个,但它`不是很物品编码风格。

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

为了使您的生活更轻松,我建议你只需要添加一个billNo类的字段和使用类的选择如果可能的话。

否则:

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