我可以用给定的选择器,方法名和变量参数调用jQuery方法吗?

时间:2013-05-30 23:21:28

标签: jquery call apply dispatch

我试图通过网络搜索找到方法,但我做不到。

我想要做的是调度如下的jQuery方法;

var dispatchFunction = function (selector, jQueryMethod, jQueryArgs) {
    jQuery(selector)[jQueryMethod].apply(this, jQueryArgs);
}

虽然它看起来像是

的结果
jQuery("#id")["methodName"]

是一个功能。但是当我在javascript控制台中调用'apply'到该函数时,它不会像下面那样工作;

func = jQuery("#todo")["text"];
=> function (e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)}

jQuery("#todo")["text"]();
=> "abc"

func.apply(this);
=> ""

func.apply(this, []);
=> ""

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

您需要做的是:

var dispatchFunction = function (selector, jQueryMethod, jQueryArgs) {
    var selection = jQuery(selector);
    selection[jQueryMethod].apply(selection, jQueryArgs);
}

您可能希望在JS中阅读有关this关键字和函数与方法调用的更多信息。