我尝试根据 documentation 扩展 UI 对话框(用户界面版本 1.8.16):
(function($) {
$.widget('ui.mydialog', $.extend(true, $.ui.dialog.prototype, {
_create: function() {
return $.Widget.prototype._create.apply(this, arguments);
}
}));
})(jQuery);
$(function() {
$('div#dialog').mydialog();
});
执行此代码会导致 JS 错误:“this.uiDialog is undefined”。
如果尝试覆盖 _init() 方法没有错误,但父方法调用无效。
我很困惑.. 哪种扩展方式是合法的,例如放置一些自定义初始化代码?
最佳答案
我认为这篇文章可以解决您的问题:Inherit from jQuery UI dialog and call overridden method .
简而言之,如果你想构建一个继承jQuery UI Dialog的widget,你可以这样做:
(function($) {
$.widget("ui.mydialog", $.ui.dialog, {
_create: function() {
$.ui.dialog.prototype._create.call(this);
}
});
})(jQuery);
实际操作:http://jsfiddle.net/william/RELxP/ .
本教程将为您启迪:http://wiki.jqueryui.com/w/page/12138135/Widget%20factory .简而言之,$.Widget
是基础小部件对象。尽管它有一个 _create
函数,但默认情况下它什么都不做,将初始化代码留给子类。看看这个更新的例子:http://jsfiddle.net/william/RELxP/1 .
关于javascript - 通过重新定义父方法在 Jquery UI 中扩展小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7450791/