有条件地排除数组故障

时间:2014-07-15 18:35:04

标签: jquery arrays each

我正在尝试使用类作为每个集合的键来过滤不同样本集的数组,以便js知道从存储的样本位置的变量中提取什么。此刻,如果我记录,例如set1,它只返回最后一个位置。 hasClass方法也没有找到集合类。总而言之,我认为我在逻辑上走的是正确的道路,但我可能在方法和效率方面喋喋不休。我试着寻找解决方案一段时间无济于事,所以我在这里。我很感激帮助。

<div class="swatches set1">Swatches</div>
<div class="swatches set2">Swatches</div>
<div class="swatches set3">Swatches</div>
var swatches = [
"swatch1.png",
"swatch2.png",
"swatch3.png",
"swatch4.png",
"swatch5.png",
"swatch6.png",
"swatch7.png",
"swatch8.png"
];    

var set1 = swatches[3,4,2];
var set2 = swatches[5,1,2];
var set3 = swatches[7,1,2];    

$('.swatches').each(function(){    
    if($(this).hasClass('set1')){
        for(i=0;i<set1.length;i++){
        $(this).append(set1[i]);
        }
    }

    if($(this).hasClass('set2')){
        for(i=0;i<set2.length;i++){
        $(this).append(set2[i]);
        }
    }

    if($(this).hasClass('set3')){
        for(i=0;i<set3.length;i++){
        $(this).append(set3[i]);
        }
    }        
});

http://jsfiddle.net/NCF92/10/

2 个答案:

答案 0 :(得分:0)

您设置数组的语法无效。

要使用swatches数组中的元素创建一个数组,它需要看起来像:

var set1 = [swatches[3],swatches[4],swatches[2]];

答案 1 :(得分:0)

要注意两件事:

  1. $this应为$(this),评论为
  2. 这样做:var set1 = [swatches[3],swatches[4],swatches[2]];
  3. 这是工作代码:

    var swatches = [
    "swatch1.png",
    "swatch2.png",
    "swatch3.png",
    "swatch4.png",
    "swatch5.png",
    "swatch6.png",
    "swatch7.png",
    "swatch8.png"
    ];
    
    
    var set1 = [swatches[3],swatches[4],swatches[2]];
    var set2 = [swatches[5],swatches[1],swatches[2]];
    var set3 = [swatches[7],swatches[1],swatches[2]];
    console.log(set1);
    
    
    $('.swatches').each(function(){
    
        if($(this).hasClass('set1')){
            for(i=0;i<set1.length;i++){
            $(this).append(set1[i]);
            }
        }
    
        if($(this).hasClass('set2')){
            for(i=0;i<set2.length;i++){
            $(this).append(set2[i]);
            }
        }
    
        if($(this).hasClass('set3')){
            for(i=0;i<set3.length;i++){
            $(this).append(set3[i]);
            }
        }
    
    });
    

    DEMO