2017-05-08 4 views
0

gehe ich, wenn wissen möchten und wie Sie einen jquery Befehl als Funktion der Parameter übergeben kannJQuery eine jquery-Methode mit Argumenten als Funktion des Parameters

var childs = ["#foo", "#bar"]; 

loopTheChilds("trigger('change')"); 

loopTheChilds("prop('disabled', true)"); 

var loopTheChilds = function (operation) { 

    $.each (childs, function (idx, val) { 
     $(val)[operation](); 
    }); 

} 

Mein gol dieses

$("#foo").trigger("change"); 
$("#bar").trigger("change"); 

// or 

$("#foo").prop('disabled', true); 
$("#bar").prop('disabled', true); 
zu erhalten wäre

Oder wissen, wie man das gleiche Ergebnis auf andere Weise erhält.

Dank

+0

Es ist möglich, mit eval(), aber unter Verwendung von eval() als schlechte Praxis betrachtet. – WaldemarIce

Antwort

1

Sie können kein Javascript, welchen Code sagen als Zeichenfolge auszuführen, es sei denn Du eval verwenden, aber wie in den Kommentaren erwähnt ist dies nicht sehr sicher und in der Regel nicht zu empfehlen. Was Sie jedoch tun können, ist, dass Ihre loopTheChilds Methode eine Funktion als Parameter übernimmt und diese Funktion einen Parameter mit einem Verweis auf das Element hat.

So könnte man etwas nach oben zu tun wie so enden:

var childs = ["#foo", "#bar"]; 

loopTheChilds(function(elem) { 
    elem.trigger('change'); 
}); 

loopTheChilds(function(elem) { 
    elem.prop('disabled', true); 
}); 

function loopTheChilds(func) { 
    $.each(childs, function(idx, elemName) { 
     func($(elemName)); //wrap in jquery selector 
    }); 
} 

Jetzt passieren Sie nur entlang der Funktion, die Sie ausführen möchten, wenn Sie die loopTheChilds Methode aufrufen.

Arbeiten Demonstration hier: https://jsfiddle.net/phpyn1t6/

+0

Es ist nicht genau das, was ich dachte, aber es scheint mir eine ausgezeichnete Lösung. Vielen Dank –

Verwandte Themen