0

我正在构建自定义 jquery ui 小部件,并且添加了自定义事件。
当我实例化小部件时,我可以覆盖原始事件处理程序。
如何从新的事件处理程序中调用原始事件处理程序?

例子:

$.widget("myns.mywidget", {
    options: {
        myoption: null,
        myevent: function(event, ui){
            alert("original event handler");
        }
    },
    myMethod: function(){
        [...]
        this._trigger("myevent", {}, {});
    }
});

当我做:

$("#target").mywidget();
$("#target").mywidget("myMethod");

我看到消息“原始事件处理程序”。
相反,如果我这样做:

 $("#target").mywidget({
     myevent: function(event, ui){
         alert("overriden event handler");
     }
 });
 $("#target").mywidget("myMethod");

我看到消息“覆盖事件处理程序”。
我怎样才能从被覆盖的原始事件处理程序中执行?
就像是:

 $("#target").mywidget({
     myevent: function(event, ui){
         alert("overriden event handler");
         original.myevent();
     }
 });
 $("#target").mywidget("myMethod");

查看消息“覆盖事件处理程序”和“原始事件处理程序”?
非常感谢,对不起我的英语

4

1 回答 1

0

我找到了这个解决方案:

$("#target").mywidget({
    myevent: function(event, ui){
        alert("overriden event handler");
        $.myns.mywidget.prototype.options.myevent.call(this, event, ui);
    }
});
$("#target").mywidget("myMethod");

如果有人有更好的解决方案,请告诉我。
谢谢

于 2013-10-23T10:29:01.280 回答