2013-10-18 36 views
0

我正在构建自定义jquery ui小部件,并添加了自定义事件。
当我实例化小部件,我可以重写原始事件处理程序。
我怎样才能从新的事件处理程序调用?

例子: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"); 

的同时看到消息“被覆盖的事件处理程序”和“原始事件处理程序”?
非常感谢,我的英语

回答

0

我发现这个解决方案很多,遗憾:

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

如果有人有更好的解决方案,请让我知道。
谢谢

相关问题