我有以下代码使用jQuery mobile创建弹出窗口。创建弹出窗口,并创建一个窗体,并将其附加到弹出窗口和两个按钮。这段代码可以正常工作,但我想知道是否有更好的方法来实现我的预期目标。
//create a div for the popup var $popUp = $("<div/>").popup({ dismissible : false,theme : "a",overlyaTheme : "a",transition : "pop" }).bind("popupafterclose",function() { //remove the popup when closing $(this).remove(); }); //create a title for the popup $("<h2/>",{ text : PURCHASE_TITLE }).appendTo($popUp); //create a message for the popup $("<p/>",{ text : PURCHASE_TEXT }).appendTo($popUp); //create a form for the pop up $("<form>").append($("<input/>",{ type : "password",name : "password",placeholder : PASSWORD_INPUT_PLACEHOLDER })).appendTo($popUp); //Create a submit button(fake) $("<a>",{ text : SUBMIT_BTN_TXT }).buttonMarkup({ inline : true,icon : "check" }).bind("click",function() { $popUp.popup("close"); that.subscribeToAsset(callback); }).appendTo($popUp); //create a back button $("<a>",{ text : BACK_BTN_TXT,"data-jqm-rel" : "back" }).buttonMarkup({ inline : true,icon : "back" }).appendTo($popUp); $popUp.popup("open").trigger("create");
解决方法
你的例子很棒,这是海报例子,应该如何创建动态的jQuery / jQuery Mobile内容。
只改变三件事情:
>最后,您应该将弹出窗口添加到所需的jQuery Mobile页面,因为它不会在data-role =“page”div之外工作。
>将功能绑定更改为on。开启事件绑定方式要快得多。而这里就是替换bind和delegate。
>检查您的代码是否可以在像Chrome这样的网络工具包浏览器中运行。 Chrome有一个令人讨厌的错误,除了pagehow之外,每个页面的事件都会阻止程式化的弹出式窗口。有关此问题的更多信息:http://stackoverflow.com/a/15830353/1848600