向UI对话框插件添加自定义方法

Bad*_*sie 4 jquery jquery-ui

我正在使用jQuery的UI对话框,我想添加一个自定义方法.

基本上当我的对话框有一个"工作"类时,它有一个加载覆盖.我正在尝试编写一些全局应用程序jQuery,以便在任何对话框关闭时,它会删除类"工作".

我不确定我在做什么,但这是我到目前为止所做的:

(function ($) {

    // BIND TO DIALOG CLOSE EVENT
    $('.ui-dialog').live('dialogclose', function() {
        $(this).dialog('cancelWorking');
    });

    // CUSTOM METHOD
    $.fn.dialog.cancelWorking = function() {
        $(this).removeClass('working');
    };

}(jQuery));
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我不确定如何调用cancelWorking对话框的方法,而且我不确定我是否已经正确地定义了该方法.

jyo*_*ore 6

正如我的评论中提到的,您可以从插件继承并扩展其方法.

(function($,undefined) {

    $.widget('ui.mydialog', $.ui.dialog,{
        test : function() { alert('works') },
    });

    $.extend($.ui.mydialog,{version:'v0.1'});
 })(jQuery);
Run Code Online (Sandbox Code Playgroud)

简单地使用它:

$('.selector').mydialog({modal:true}); //Create (same as a dialog)

$('.selector').mydialog('test');  //Call extended method 
Run Code Online (Sandbox Code Playgroud)

此模式允许您添加其他输入选项,方法,事件等,以及重载或扩展父插件中提供的功能.

还应该提到这很好,因为您仍然可以使用常规插件而无需在UI中的其他位置进行任何修改.