Не думаю, что вы хотите использовать eval
, а скорее анонимную функцию, поскольку eval
будет оценивать строку при ее передаче в нее.
(function($, undefined) {
$.globalEval = function(name, fn, param) {
if (typeof $.fn[name] === "undefined") {
$.fn[name] = function(){
var args = [].concat(
param,
[].slice.call(arguments));
return this[fn].apply(this, args);
};
}
}
})(jQuery);
Вышеупомянутое используется следующим образом:
// Name of function to be called
var strFun = "hide";
// Params that should be passed, can be either array or string
var strParam = "slow";
// Call our plugin
$.globalEval("f", strFun, strParam);
// f() is now available for all elements
// Passing arguments here will add to the current params
// In this case, it will be the callback
$("div").f(function(){ /* Callback that is called when element is hidden */ });
Выше не очень полезно, так как вы можете просто прикрепить анонимную функцию непосредственно к $.fn.f
и получить тот же результат, но по крайней мере он дает вампредставление о том, как это работает.
См. контрольный пример на jsFiddle