2013-10-11 180 views
0

我想構建Jquery對話框來在屏幕上顯示多個彈出窗口,但有時候確定按鈕沒有執行任何操作。JQuery對話框關閉問題

function alert_popup_msg(_msg) 
{ 
    var id = "" + (new Date()).getTime(); 
    var popDiv = "<div id='" + id + "' class=\"dialog-size def-popup\"><div class=\"popup-background\"><label class=\"color-white no-text-shadow center-align font-helv-16-bold std-padding-a\">Alert</label><label class=\"color-white no-text-shadow center-align font-helv-12-reg std-padding-a\">"+_msg+"</label><div class=\"center-align\"><a class=\"btn-simple-black-orange btn-text btn-login\" id=\"okButtonCallBack\">Ok</a></div></div></div> ";            
    $.mobile.activePage.append(popDiv).trigger("pagecreate"); 

    $("#" + id).dialog({ 
     modal: false, 

    }); 
    $("#okButtonCallBack").click(function(event){ 
      $("#" + id).dialog("close"); 
      $("#" + id).remove(); 
    }); 

}; 

任何人都可以請幫我解決這個問題嗎?它阻止用戶執行任何操作。即使您導航回到同一屏幕,彈出窗口仍會顯示,除非您刷新整個屏幕。

感謝, 拉梅什

+1

在所有對話框中不能使用相同的'id =「okButtonCallBack」',因爲ID必須是唯一的。 – Barmar

+0

您是否一起使用JQuery Mobile和JQuery UI?他們之間有一些衝突,包括與對話衝突。您是否嘗試使用JQuery UI對話框或JQuery Mobile對話框?您對$ .mobile的引用表示您正在使用jquery mobile,但對話框語法是針對JQuery UI對話框的。如果您使用JQuery Mobile,則建議使用JQuery Mobile彈出窗口小部件。文檔:http://api.jquerymobile.com/popup/ – mayabelle

回答

0

您確定按鈕不應該有一個ID,但應通過CSS類來指定,如ID是通過定義獨特的,你的代碼目前正與多個對話恕我直言打破(如$("#example")總會返回第一個結果)。

0

id="okButtonCallBack"更改爲class="okButtonCallBack",因爲ID必須是唯一的。然後寫處理程序:

$(document).on("click", ".okButtonCallBack", function() { 
    var dialog = $(this).closest(".def-popup"); 
    dialog.dialog("close").remove(); 
} 

該處理器只能使用一次說明,它並不需要在alert_popup_msg功能的約束。

0

使用on而不是click,我可以建議,不要在ID屬性中使用ID,那時您不需要多於1個對話框。

這將「偵聽」與dialog-ok-button類匹配的body中的節點更改,並在將回調綁定到click事件時將其插入到DOM中。所以不需要多次重新運行這段代碼。

$('body').on('click', '.dialog-ok-button', function(event){ 
    $(".dialog").dialog("close"); 
    $(".dialog").remove(); 
});