jquery ui 的 dialog,里面如果不用 $.get $.ajax 之类的东西就一切正常,只要用了AJAX, 甚至是.load 之后 dialog就不正常了,不能用外部的按钮关闭,测试.dialog("isOpen")也是返回object.代码如下:
function showSupplierCategory() {
       alert($("#supplierCate").dialog("isOpen"));
        if ($("#supplierCate").dialog("isOpen") !== true) {
            $("#supplierCate").dialog();           
            $("#supplierCate").html("<p>Loading...</p>");
            $("#supplierCate").load('/supplier/index')
            
        }   
    }
    function closeSupplierCategory() {
        
        $("#supplierCate").dialog("close");
        
    }<button onclick="return showSupplierCategory()" >open</button> 
<button onclick="closeSupplierCategory()"  >close</button>
<div id="supplierCate"></div>经反复测试,只要没有这句:$("#supplierCate").load('/supplier/index')
或者是:$.get('/supplier/index', function (rs) {                $("#supplierCate").html(rs);            });
就一切正常,在对话框打开的时候alert($("#supplierCate").dialog("isOpen"));是返回的true,也可以用<button onclick="closeSupplierCategory()"  >close</button>关闭,如果经过AJAX调用,就不行了,只能用对话框内的小叉关闭,
对话框明明是打开的,$("#supplierCate").dialog("isOpen")却返回[Object Object].
测试了一天不得要领,帮忙看下!谢谢!

解决方案 »

  1.   

    function showSupplierCategory() {
        if ($("#supplierCate").dialog("isOpen") !== true) {
            $("#supplierCate").dialog({
                title:'myDialog',
                autoOpen: true,
                resizable:false,
                width: 460,
                height:350,
                open: function(event, ui) {$(this).html("<p>Loading...</p>");$(this).load('/supplier/index')}
            });  
        } 
    }
    function closeSupplierCategory() {$("#supplierCate").dialog("close");}或者按你自己写的:
    function showSupplierCategory() {
        if ($("#supplierCate").dialog("isOpen") !== true) {
            $("#supplierCate").dialog();
            $("#supplierCate").html("<p>Loading...</p>");
            $("#supplierCate").load('/supplier/index');
        } 
    }在最新版本的jquery下测试均无问题,你如果测试有问题,可将/supplier/index 换成另一个普通的页面试试。比如新建一个load.html,里面写上些文字,再测试下就知道了