JQuery mobileを使用してポップアップを作成する次のコードがあります。ポップアップが作成され、フォームが作成されて、2つのボタンとともにポップアップに追加されます。このコードは機能しますが、私の意図する目標を達成するためのより良い方法があるかどうか疑問に思っています。
//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コンテンツを作成する方法のポスターの例です。
変更するのは3つだけです。
https://github.com/serbanghita/jQM-dynamic-popup が役立ちます。それでも、ポップアップのコンテンツ内でjQuery Mobileコードをマークアップする必要があります。これを本番環境で使用していますが、単純なメッセージ用です。
まず、一定のポップアップダイビング
<div id="popupPhotoLandscape" class="photopopup" data-role="popup" data-theme="none" data- shadow="false" data-overlay-theme="a">
<a href="#home" data-role="button" data-theme="a" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Close</a>
//Content
</div>
ポップアップを開くボタン
<a data-role="button" data-theme="c" data-inline="true" data-mini="true" id="snap_view_btn" style="float:left;margin-top: 4px;" >Snap View</a>
ボタンをクリックしてください
$('#snap_view_btn').click(function() {
$('#popupPhotoLandscape').popup();
$('#popupPhotoLandscape').popup("open");
});
ページ初期化
$( document ).on( "pageinit", function() {
$( ".photopopup" ).on({
popupbeforeposition: function() {
var maxHeight = $( window ).height() - 60 + "px";
$( ".photopopup" ).css( "height", '800px' );
$( ".photopopup" ).css( "width", '600px' );
}
});
});