我正在使用$ .widget工厂扩展jQuery UI小部件。在这个特殊情况下,我将继承Wijmo的wijlinechart。我需要在孩子班级内回应wijlinechart的“画”事件。
考虑一下:
$.widget("bw.wijlinechartcursor", $.wijmo.wijlinechart, {
_create: function () {
var self = this;
$.wijmo.wijlinechart.prototype._create.apply(self, arguments);
self.element.on("painted", function (e) {
alert("Got painted in child via element.on"); // Doesn't get called.
});
// This works, but blows away the client code's handler (below)
self.options.painted = function (e) {
alert("Got painted in child class via options.painted!");
}
},
_painted: function () {
alert("Got painted in child via _painted"); // Doesn't get called.
}
});
$("#mywijlinechartcursor").wijlinechartcursor({
// ... stuff...
painted: function (e) {
alert("Got painted in client code");
}
});
那么在继承的父类_trigger的子类中处理事件的最有效方法是什么?
答案 0 :(得分:1)
使用on()
绑定到事件应该有效,然后该事件可能不会被命名为painted
。
每个小部件都有自己的事件前缀,默认为小部件的名称。如果基本窗口小部件未覆盖此默认值,则该事件将命名为wijlinechartpainted
。
在任何情况下,前缀都在小部件的widgetEventPrefix
属性中可用,因此您可以写:
self.element.on(self.widgetEventPrefix + "painted", function(e) {
alert("Got painted in child via element.on"); // Should be called.
});