生成if语句JQuery

时间:2016-07-18 12:22:35

标签: javascript jquery if-statement

我有一个数组selected_filters,我用点击元素的id填充。我需要根据这个数组生成一个if语句。我尝试生成字符串然后使用eval()来执行它,但是没有用。也许我做错了什么或者你有什么想法如何生成声明?

语句字符串生成:

 var selected_filters = [filter_by_color,filter_by_transmissivity];
    $.each(selected_filters, function(k, v){
      validate += '($.inArray(t.data(' + v + '),filters_obj[' + v + ']) > -1 || obj_l == emptyFilters) && '; 
    });
    validate += '(search.contains(filters_obj.search) || filters_obj.search.length === 0)';

生成的字符串: ($.inArray(t.data(filter_by_color),filters_obj[filter_by_color]) > -1 || obj_l == emptyFilters) && ($.inArray(t.data(filter_by_transmissivity),filters_obj[filter_by_transmissivity]) > -1 || obj_l == emptyFilters) && (search.contains(filters_obj.search) || filters_obj.search.length === 0)

用法:

if(eval(validate)){ //some code }

1 个答案:

答案 0 :(得分:0)

找到解决方案。改变了逻辑,不再使用eval()。 将代码更改为:

var visible = true;
 $.each(selected_filters, function(k, v){
  visible = visible && ($.inArray(t.data(v),filters_obj[v]) > -1 || filters_obj[v].length === 0);
                });
  visible = visible && (search.contains(filters_obj.search) || filters_obj.search.length === 0);

使用方法: if(visible){ //some code }