2012-02-03 17 views
1

所以我有一個列表元素填充產品,我需要計算最終價格,但要做到這一點,我需要找到女巫產品有相同的稅費。jquery循環遍及ul發現不同的屬性('稅')

這樣做,我能夠隔離它們,但我怎麼能自動做到這一點?我的意思是,如果我不知道稅費,我如何找到不同的稅收並加入?

希望我的英語很好,讓自己清楚。

由於

$('#list').find('li').each(function(i) { 
    if($(this).attr('tax') == 6) { 
     console.log('6'); 
    } else if($(this).attr('tax') == 13) { 
     console.log('13'); 
    } else if($(this).attr('tax') == 23) { 
     console.log('23'); 
    } else { } 
}); 
+0

所以你想知道每個清單項目上的稅款是什麼,並將它們全部添加到一個變量中? – 2012-02-03 11:07:15

+0

或者您是否想將具有相同稅收的每個元素分組到一個數組中? – 2012-02-03 11:07:47

+0

我想查找每個清單項目上的稅款,然後我可以按照稅收(?)=€... – Pluda 2012-02-03 11:19:26

回答

1

使用閉包的方式就像這組裏的物品,然後循環對象做你的計算(或做它只有一個通行證,如果是簡單的...)

function calc_prices() 
{ 
    var tax_groups = {}; 
    $('#list').find('li').each(function(i) { 

    if(!tax_groups[$(this).attr('tax')]) tax_groups[$(this).attr('tax')] = []; 
    tax_groups[$(this).attr('tax')].push($(this)); 
    }); 
    console.log(tax_groups); 
    //Do your math here by looping or accessing tax_groups 
} 
+0

謝謝,現在就開始工作吧! – Pluda 2012-02-03 12:14:01

2

這將創建一個「數據」對象,其屬性是不同的稅收值,並且每個屬性的值是匹配DOM元素的數組。

var data = {}; 

$('#list').find('li').each(function(i) { 
    var tax = $(this).attr('tax'); 
    if(!data[tax]) data[tax] = []; 

    var len = data[tax].length; 
    data[tax][len] = this; 
}); 
+0

中的示例10項目進行計算,但如果我不知道稅務價值,怎麼辦? – Pluda 2012-02-03 11:20:22

+0

@Pluda - 請參閱編輯 – sje397 2012-02-03 11:22:13