Преобразовать «параметр» в метод jQuery - PullRequest
0 голосов
/ 17 июня 2011

Есть ли способ преобразовать параметр в метод jQuery, аналогичный eval в Javascript?

<script type="text/javascript">
var strFun = "hide";
var strParam = "slow";

var f=eval(strFun)("'" + strParam + "'");
$.globalEval(f);
var oo=$("#test");
oo.f();
</script>

1 Ответ

3 голосов
/ 17 июня 2011

Не думаю, что вы хотите использовать 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

...