如何将 jQuery 函数作为另一个函数的参数传递?

How to pass jQuery function as another function's argument?

我想创建将一个函数作为参数(另一个函数)的函数,returns 函数将应用于第一个函数的参数。

像这样的单子思想:

function creator(fun) {
    return function (arg) {
        fun(arg);
    };
}

$(function () {
    var printer = creator(alert);
    printer("foo bar");
})

问题是我无法 google 或想出如何用 jQuery 函数做同样的事情:

function show_and_change(fun) {
    return function (el, attr, value) {
        console.log(el.fun(attr)
        el.fun(attr, value);
    }
}

$(function () {
    var my_mod = show_and_change($.fn.attr);
    my_mod($("#one"), "foo", "bar2");
})

el.fun 会从字面上尝试访问 el 上的 属性 fun(不存在)。相反,您想调用 fun(就像您在第一个示例中所做的那样),但还将其 this 值设置为 jQuery 对象:

fun.call(el, attr, value);

详细了解 .call and .apply