2017-07-15 32 views
0

我在jQuery中遇到了選擇器級聯的問題。我有一個動態生成的表單,用於創建包含5條項目的估算值。我需要計算總成本乘以項目成本項目數量。我有以下代碼:如何在JQuery中連接選擇器?

NumberOfLinesInForm = 5; 
var id; 

for (i = 0; i < NumberOfLinesInForm; i++) { 

    document.write(i); 

    $('#ItemCost' + 'id', '#ItemQuantity' + 'id').keyup(function() { 
     var ItemQuantityItem + 'id' = parseFloat($('#ItemQuantity' + 'id').val()) || 0; 
     var ItemCostItem + 'id' = parseFloat($('#ItemCost' + 'id').val()) || 0; 

     $('#ItemCostTotal' + 'id').val(ItemQuantityItem * ItemCostItem); 

    }); 

} 

我想實現這個結果在我jQuery

$('#ItemCost1', '#ItemQuantity1').keyup(function() { 

    var ItemQuantityItem1 = parseFloat($('#ItemQuantity1').val()) || 0; 
    var ItemCostItem1 = parseFloat($('#ItemCost1').val()) || 0; 

    $('#ItemCostTotal1').val(ItemQuantityItem1 * ItemCostItem1); 

}); 

任何幫助將不勝感激!

+0

你的代碼會發生什麼?你有什麼錯誤嗎?我沒有得到你想要做的。 – ElChiniNet

+0

你可以創建一個片段嗎? –

回答

1

只寫一個字符串中的選擇,這樣反而:

$('#ItemCost1', '#ItemQuantity1').keyup(function(){ 

您使用此:

$('#ItemCost1, #ItemQuantity1').keyup(function(){ 

當你使用它那樣,使用兩個paremeters,第二個參數是用於表示上下文,所以#ItemQuantity1將永遠不會被選中:http://api.jquery.com/jQuery/


接下來,如果你想Concat的變量,它們不得是一個字符串,所以這樣的:

$('#ItemCost' + 'id', '#ItemQuantity' + 'id').keyup(function(){ 

應該是:

$('#ItemCost' + id + ', #ItemQuantity' + id).keyup(function(){ 

其次,這是不行的:

var ItemQuantityItem + 'id' = ... 

您正在定義一個變量,然後向它添加一個字符串並將所有的值。

+0

這就像一個魅力! – Luke

+0

是的,只是更加小心字符串和變量。 – Shomz

+0

是否有任何理由不應該這樣做:var ItemQuantityItem0 = parseFloat($('#ItemQuantityItem'+ i).val())|| 0;'當我添加'+我'這個代碼不再工作了。如果我只是簡單地使用'#ItemQuantityItem0',那麼它就可以工作。我的語法正確嗎?非常感謝! – Luke