1

我试图通过网络搜索找到路,但我找不到。

我想要做的是像下面这样调度 jQuery 方法;

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

虽然它看起来像

jQuery("#id")["methodName"]

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

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, []);
=> ""

有没有办法做到这一点?

4

1 回答 1

1

你需要做的是:

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

您可能想阅读更多关于thisJS 中的关键字和函数与方法调用的信息。

于 2013-05-31T00:00:01.227 回答