2013-10-11 132 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(); 
});