2013-10-18 72 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"); 

如果有人有更好的解決方案,請讓我知道。
謝謝

相關問題