如何将jQuery函数作为另一个函数传递'的论点

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

本文关键字:函数 另一个 jQuery      更新时间:2023-09-26

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

这是一个单一的想法:

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

问题是,我无法用谷歌搜索或找出如何用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.apply的更多信息。