Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery.fn.extend更改javascript上下文_Javascript_Jquery - Fatal编程技术网

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

使用jQuery.fn.extend更改javascript上下文,javascript,jquery,Javascript,Jquery,我尝试创建一个方法,该方法可以从与我的B类对应的已创建DOM元素调用,如下所示: $("#" + data.selectedId).eventCallback(data); MyeventCallback是在母类a中定义的,您可以在以下代码中看到: function A (){ this.addToPage = function () { ... var context = this; // This call is well over

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

$("#" + data.selectedId).eventCallback(data);
My
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);
正如所评论的,问题在于,当我输入block
jQuery.fn.extend
时,似乎无法使用相同的上下文。有更好(更干净)的方法吗?我错过什么了吗

编辑,以澄清:

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

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


因此,我的想法是在类中实现回调,然后使其可以从使用实例创建的DOM对象中调用。

您不希望
a
特定于实例的函数潜伏在“global”
$.fn
中。真的没有。你到底想用它做什么?顺便说一句,我想做的很简单,那就是通过从DOM中选择任何类型的对象来调用OneEvent(…)回调。“从DOM中选择任何类型的对象”-但是js对象,而不是DOM节点也是如此?请进一步详细说明,可能是一个代码示例。