2017-07-15 77 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