2011-08-17 39 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()