2016-07-18 6 views
0

Ich habe ein Array selected_filters, die ich mit der ID des angeklickt Element füllen. Ich muss eine if Anweisung gemäß diesem Array generieren. Ich habe versucht, Zeichenfolge zu generieren und dann eval() zu verwenden, um auszuführen, aber nicht funktioniert. Vielleicht mache ich etwas falsch oder hast du Ideen, wie man eine Aussage generiert?Erzeugung von if-Anweisung JQuery

Statement String Generation:

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)'; 

generiert string: ($.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)

Verbrauch:

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

Was meinst du mit "nicht funktioniert"? Code wird nicht ausgeführt? Siehst du irgendeinen Fehler? –

+0

Code immer im 'else' Zustand. Aber ich habe viele Fälle, die "wahr" sind für "if" – vladja

+1

Die einzige Sache, die ich empfehlen kann, ist eine Situation zu finden, wenn Verhalten inkorrekt ist, generiert, wenn Anweisung ersetzen "if (eval (validate))" mit generierten Zustand und debuggen . –

Antwort

0

gefunden Lösung. Logik geändert und nicht mehr eval() verwenden. Geänderte Code:

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); 

Verbrauch: if(visible){ //some code }

Verwandte Themen