使用jQuery.fn.extend更改javascript上下文
我尝试创建一个方法,该方法可以从与我的B类对应的已创建DOM元素调用,如下所示:使用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
$("#" + data.selectedId).eventCallback(data);
MyeventCallback
是在母类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);
正如所评论的,问题在于,当我输入blockjQuery.fn.extend
时,似乎无法使用相同的上下文。有更好(更干净)的方法吗?我错过什么了吗
编辑,以澄清:
- 类定义了在html文档中设置的小部件的结构(因此在我看来,一个实例以某种方式链接到DOM的一部分)
- 作为一个用户,我希望能够选择一个调用方法的小部件(其定义取决于B)
因此,我的想法是在类中实现回调,然后使其可以从使用实例创建的DOM对象中调用。您不希望
a
特定于实例的函数潜伏在“global”$.fn
中。真的没有。你到底想用它做什么?顺便说一句,我想做的很简单,那就是通过从DOM中选择任何类型的对象来调用OneEvent(…)回调。“从DOM中选择任何类型的对象”-但是js对象,而不是DOM节点也是如此?请进一步详细说明,可能是一个代码示例。