扩展$ .fn.init函数

时间:2012-06-21 20:54:30

标签: javascript jquery

我正在尝试使用以下内容扩展jQuery:

$.fn.extend({
    initCore:   $.fn.init,
    init:       function (selector, context, rootjQuery) {
        return $.fn.initCore(selector, context, rootjQuery);
    }
}),

但是,它似乎无法正常工作,并且创建简单的事情(例如点击警报)会产生错误。有谁能发现问题?

提前致谢!

2 个答案:

答案 0 :(得分:4)

$.fn.init是类构造函数本身。

尝试添加$.fn.init.prototype = $.fn后记以恢复原始原型。

答案 1 :(得分:1)

我猜你错过了上下文。尝试

return $.fn.initCore.call(this, selector, context, rootjQuery);

甚至更容易

return this.initCore(selector, context, rootjQuery);

不,等等,init是构造函数本身。这意味着

$.fn.initCore.call(this, selector, context, rootjQuery);
doSomeThingWith(this);

...

$.fn.init.prototype = $.fn;

var ob = new $.fn.initCore(selector, context, rootjQuery);
doSomeThingWith(ob);
return ob;