我正在使用jQuery的UI对话框,我想添加一个自定义方法。
基本上当我的对话框有一个“工作”类时,它有一个加载覆盖。我正在尝试编写一些全局应用程序jQuery,以便在任何对话框关闭时,它会删除类“working”。
我不确定我在做什么,但这是我到目前为止所做的:
(function ($) {
// BIND TO DIALOG CLOSE EVENT
$('.ui-dialog').live('dialogclose', function() {
$(this).dialog('cancelWorking');
});
// CUSTOM METHOD
$.fn.dialog.cancelWorking = function() {
$(this).removeClass('working');
};
}(jQuery));
正如您所看到的,我不确定如何调用对话框的cancelWorking
方法,而且我不确定我是否已正确定义该方法。
答案 0 :(得分:6)
正如我的评论中所提到的,您可以从插件继承并扩展其方法。
(function($,undefined) {
$.widget('ui.mydialog', $.ui.dialog,{
test : function() { alert('works') },
});
$.extend($.ui.mydialog,{version:'v0.1'});
})(jQuery);
简单地使用它:
$('.selector').mydialog({modal:true}); //Create (same as a dialog)
$('.selector').mydialog('test'); //Call extended method
此模式允许您添加其他输入选项,方法,事件等,以及重载或扩展父插件中提供的功能。
还应该提到这很好,因为您仍然可以使用常规插件而无需在UI中的其他位置进行修改。
答案 1 :(得分:4)
我想做同样的事情,但对接受的答案并不满意。我进一步了解它,发现你可以使用新的方法:
$.ui.dialog.prototype.toggleProcessing = function(enable) {
alert(((enable) ? 'en' : 'dis') + 'able processing');
}
然后你可以调用它,因为你调用任何其他jQuery UI方法:
$('#myDialog').dialog('toggleProcessing', true);
$('#myDialog').dialog('toggleProcessing', false);