遍及ul的Jquery循环找到不同的attr('tax')

时间:2012-02-03 11:02:13

标签: jquery

所以我有一个填充了产品的列表元素,我需要计算最终价格,但要做到这一点,我需要找到女巫产品有相同的税费。

这样做我可以隔离它们,但是如何自动完成?我的意思是,如果我不知道税费怎么能找到不同的税收并加入呢?

希望我的英语很好,让自己清楚。

由于

$('#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 { }
});

2 个答案:

答案 0 :(得分:2)

这将创建一个'data'对象,其属性是不同的税值,每个属性的值是匹配的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;
});

答案 1 :(得分:1)

以这样的方式使用闭包对li项目进行分组,然后在对象中循环进行计算(如果更简单,则只在一次传递中进行...)

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
 }