2012-06-19 149 views
2

我有一個jQuery對話框,我想讓JIT(Just in Time)對我來說,這是迄今爲止最優雅的工作方式,但我花了大約2天的時間在這個錯誤,我不能爲我的生活弄清楚。jquery ui對話框不會「關閉」

我知道它應該工作,因爲在角落裏的X點擊精美的作品

所以。你可以a)幫我解決這個問題或者b)告訴我如何將取消按鈕綁定到X的點擊事件上(當我遇到過這樣的問題時,我已經使用過這個技巧,但是在這個控件上沒有id 。這樣做是爲了死後能找到,而現在很明顯的方式(即我知道如何找到)瀏覽使用父母()層次

$(function() { 
    var popUrl = 'pop.php?jscriptpopup=true'; 
    $("#button").click(function() { 
     JQueryDialog(popUrl); 
     return false; 
    });   
}); 

var dialog; //<--added in desperation 

function JQueryDialog(url){ 

    $("#dialog").remove(); 

    $("body").append("<div id='dialog'></div>"); 

    dialog = $("#dialog").dialog({ 
     resizable: false, 
     draggable: false, 
     width: 770, 
     height: 470, 
     context: that, 
     modal: true, 
     autoOpen: false, 
     buttons: { 
      "Cancel" : function(){ 
       $(dialog).("close"); //<--this will not work 
            //$(this).dialog("close"); <<-- hopeless 
            //$("#dialog").dialog("close"); <<-- hopeless 
            //$("#dialog").remove(); <<-- hopeless 
      } 
     } 
    });  

    $.get(url, function(data) { 
     $("#dialog").html(data); 
     $("#dialog").dialog('open');   
    });  
} 

回答

2

,那一刻我貼我秒鐘內後,它絆倒了 - 往往是方式

這個工程..不知道爲什麼

function JQueryDialog(url){ 

    $("#dialog").remove(); 

    $("body").append("<div id='dialog'></div>"); 

    that = $("#dialog"); 

    dialog = $("#dialog").dialog({ 
     resizable: false, 
     draggable: false, 
     width: 770, 
     height: 470, 
     context: that, 
     modal: true, 
     autoOpen: false, 
     buttons: { 
      "Cancel" : function(){ 
       that.dialog("close"); 
      } 
     } 
    });  

    $.get(url, function(data) { 
     $("#dialog").html(data); 
     $("#dialog").dialog('open');   
    });  
} 
+0

按照jQuery UI的文檔'$(本).dialog( 「親密」 )'應該在Cancel中工作。 http://jqueryui.com/demos/dialog/#option-buttons – lucuma

+0

是的,我知道它應該工作,但我強烈懷疑,這是一個覆蓋泡沫事故造成的after-include-lib-some.js(我懷疑它,我把它們全部評論爲一個測試)或一個錯誤(我使用jQuery的3或4版本,它們都似乎遭受它),即錯誤作爲派生的事實,我將div添加到DOM – conners

+0

我有一個思考,它必須是因爲$('#dialog')實際上被替換爲一些幕後邏輯,所以現在有2:$('#old-dialog-div-now-替換那個行動存在在')和一個「讓我來處理這個」$('#dialog'),這實際上是一個替代品在...內以及以某種方式準備事件*替換* $('對話')使用不正確配對成爲$(this)時,當你追加的div我的方式...因此(如果我的猜測這裏是正確的)「that」工作,因爲它是* shell的一部分* div的事件 – conners