使用jQuery.fn.extend更改javascript上下文

时间:2014-06-11 14:11:15

标签: javascript jquery

我尝试创建一个可以从与我的B类对应的已创建DOM元素调用的方法,如下所示:

$("#" + data.selectedId).eventCallback(data);

我的eventCallback是在母班A中定义的,您可以在以下代码中看到:

function A (){
    this.addToPage = function () {
        ...

        var context = this;
        // This call is well overridden
        context.onEvent("toto");

        jQuery.fn.extend({
            // This call uses A's method every time
            eventCallback: function (data) {context.onEvent(data);}
        }); 
    };

    this.onEvent = function (data) {
         console.log("to override");
    };
}

function B (){
    this.onEvent = function (data) {
         console.log("overridden");
    };
}
B.prototype = Object.create(A.prototype);

正如所评论的那样,当我进入块jQuery.fn.extend时,我似乎无法使用相同的上下文。有更好(更清洁)的方法吗?我想念一下吗?

编辑,澄清:

  • A类定义了我的html文档中设置的小部件的结构(所以在我看来,一个实例以某种方式链接到DOM的一部分)。

  • 作为用户,我希望能够选择一个调用方法的小部件(该定义取决于B)。

所以我的想法是在类中实现一个callBack,然后从使用A实例创建的DOM对象中调用它。

0 个答案:

没有答案