jQueryUI 启用与关闭对话框窗口相关的链接

jQueryUI Enabling the link with respect of closing dialog window

本文关键字:链接 窗口 启用 jQueryUI 对话框      更新时间:2023-09-26

我正在研究jQuery UI对话框,JS Fiddle供参考。如果您在单击关闭窗口(对话框)时观察到,则链接未启用,但是应根据相对窗口关闭启用链接。如何将关闭对话框窗口与相应的链接相关联并再次启用它?

$(function() {
    function opener(params){
        var _params = params;
            for (var obj in _params){
                dialogOpener(_params[obj]);
            }
        function dialogOpener(selector){
            $('#'+selector.linkSelector).on('click', function(ev){
                ev.preventDefault();
                ev.stopPropagation();
                var url = $(this).attr('href');
                if ($(ev.target).hasClass('disabled')) {
                        return false;
                } else{
                    $('#'+selector.moduleSelector).dialog({width: 800, position: 'top'}).load( url);
                    $(this).addClass('disabled');
                }
            });
        }
    }
    opener([
      { linkSelector: 'google', moduleSelector: 'googleModule'},
      { linkSelector: 'facebook', moduleSelector: 'facebookModule'},
      { linkSelector: 'yahoo', moduleSelector: 'yahooModule'},
      { linkSelector: 'gmail', moduleSelector: 'gmailModule'}
    ]);
});

尝试添加一个事件,该事件在初始化对话框时触发,以重新启用链接。例如,您的对话框打开器函数可能如下所示:

function dialogOpener(selector){
    $('#'+selector.linkSelector).on('click', function(ev){
        ev.preventDefault();
        ev.stopPropagation();
        var url = $(this).attr('href');
        var selected = $(this);
        if ($(ev.target).hasClass('disabled')) {
                return false;
        } else{
            $('#'+selector.moduleSelector).dialog({
                width: 800, 
                position: 'top', 
                close: function(event,ui) { 
                    selected.removeClass('disabled'); 
                }
            }).load( url);
            selected.addClass('disabled');
        }
    });
}

JSFiddle: http://jsfiddle.net/mobj45kt/2/

关闭事件的 jQuery 对话框 API:http://api.jqueryui.com/dialog/#event-close