jQuery UI对话框仅在第一次调用时才起作用

时间:2011-03-25 14:00:44

标签: javascript jquery html jquery-ui jquery-ui-dialog

我有一个简单的html代码片段

<div style="display:none;" id="link_to_list"></div>
 <a href="#" onclick="save_onclick()">
     Back to List
 </a>

一个简单的jquery函数,用于处理点击。

function save_onclick() {
    $( "#link_to_list" ).dialog({
        title:'Are you sure you don\'t want to save?',
        resizable: false,
        height:140,

        modal: true,
        buttons: {
            Ok: function() {
                window.location.href = "findUsers";
                $( this ).dialog( "close" );
            },
            Cancel: function() {
                $( this ).dialog( "close" );
            }
        }
    });
}

当我第一次点击时,它可以工作,但div“link_to_list”擦除,我不能再次调用它。我怎么能绕过这个?

3 个答案:

答案 0 :(得分:3)

认为问题可能是在第二次点击时您尝试重新初始化对话框(再次,如果我正确回想起来)将无效。相反,您可以先设置对话框,然后让点击处理程序打开对话框。

$( "#link_to_list" ).dialog({
    title:'Are you sure you don\'t want to save?',
    resizable: false,
    height:140,
    autoOpen: false,

    modal: true,
    buttons: {
        Ok: function() {
            window.location.href = "findUsers";
            $( this ).dialog( "close" );
        },
        Cancel: function() {
            $( this ).dialog( "close" );
        }
    }
});

function save_onclick() {
  $('#link_to_list').dialog('open');
}

答案 1 :(得分:3)

$(本).dialog( “破坏”)

完全删除对话框功能。这将使元素返回到pre-init状态。

$(本).dialog( “关闭”)

关闭对话框

http://jqueryui.com/demos/dialog/

答案 2 :(得分:0)

Mark的答案有效但是如果你用x按钮关闭它就不起作用了。不要使用破坏。将autoOpen设置为false,调用对话框,然后在单独的调用中打开

    $( "#dialog" ).dialog({
        autoOpen: false,
        show: "blind",
        hide: "explode"
    });

    $( "#opener" ).click(function() {
        $( "#dialog" ).dialog( "open" );
        return false;
    });

http://jqueryui.com/demos/dialog/#animated