数组中的jquery推送条件

时间:2015-08-14 20:30:38

标签: javascript jquery

我被困在一个代码上,不知道为什么它不起作用请建议我

我在数组中推送条件,如

var condition = [];
if(performer !== "All" ){
    condition.push("(($( this ).attr('performer') === $.trim(performer)))");
}
if(music !== "All" ){
    condition.push("(($( this ).attr('music') === $.trim(music)))");
}
if(collector !== "All" ){
    condition.push("(($( this ).attr('collector') === $.trim(collector)))");
}
if(clickedThemeArray.toString() !== "All"){
    condition.push("(arraysEqual(themeArray,clickedThemeArray))");
}
console.log(condition.join(" && "));

然后加入&&像这样

var finalCon = condition.join(" && ");
if(finalCon){
    $( this ).addClass('displayBlock');
}

但它不起作用请帮帮我

提前致谢。

3 个答案:

答案 0 :(得分:0)

摆脱双引号

condition.push("(($( this ).attr('performer') === $.trim(performer)))");

应该是

condition.push($( this ).attr('performer') === $.trim(performer));

等等。

否则,它们将被评估为字符串,而不是布尔值

答案 1 :(得分:0)

您通过添加双引号将数组中的条件作为字符串推送。因此,当您将它们与&&组合时,它们无法正常工作。

书写 condition.push( $(this).attr('performer') === $.trim(performer) ); 应该足够了。

答案 2 :(得分:0)

一种解决方案是改为运行变量:

var passedConditions = true;
if(performer !== "All" ){
    passedConditions = passedConditions && $( this ).attr('performer') === $.trim(performer);
}
if(music !== "All" ){
    passedConditions = passedConditions && $( this ).attr('music') === $.trim(music);
}
if(collector !== "All" ){
    passedConditions = passedConditions && $( this ).attr('collector') === $.trim(collector);
}
if(clickedThemeArray.toString() !== "All"){
    passedConditions = passedConditions && arraysEqual(themeArray,clickedThemeArray);
}

if (passedConditions) {
    $( this ).addClass('displayBlock');
}