1

jQuery Mobile を使用すると、以下のコードが機能しますが、メニュー項目をクリックしてから「戻る」をクリックすると、すべてのメニュー項目が複製/追加されます。

 $.each(siteData["pages"], function(i,v) {


        $.mobile.activePage.find('[data-role=content]').append('' +
            '<a href="#' +  v["id"] +
            '" data-role="button">' + v["name"] +
            '</a>').trigger('create');



        var newPage = $("<div data-role='page' id='" + v["id"] +
            "'><div data-role=header><a data-iconpos='left' data-icon='back' href='#' data-role='button' " +
            "data-rel='back'>Back</a>" +
            "<h1>Dynamic Page</h1>" +
            "</div>" +
            "<div data-role=content>Stuff here</div>" +
            "</div>");


        // Append the new page info pageContainer
        newPage.appendTo($.mobile.pageContainer);



    }); 

どうすればこの動作を止めることができますか?

4

1 に答える 1

2

前回の質問の解決策を作成します。理解しやすくなります

実際の例を見てみましょう: http://jsfiddle.net/Gajotres/3kPTf/

基本的に、コンテンツを追加する前に、その定数が既に存在するかどうかを確認する必要があります。

あなたの場合、新しいボタン/ページを追加するたびに、そのボタン/ページが既に存在するかどうかを次のように確認します。

if(!$('#second').length){
     // In this case this code block will execute if button with an id second don't exist
}

コード例を次に示します。

$(document).on('pagebeforeshow', '#index', function(){  
    if(!$('#second').length){
        $.mobile.activePage.find('[data-role=content]').append('<a href="#second" data-role="button">Second</a>').trigger('create');

        var newPage = $("<div data-role='page' id='second'><div data-role=header><a data-iconpos='left' data-icon='back' href='#' data-role='button' data-rel='back'>Back</a>" +
                        "<h1>Dynamic Page</h1>" +
                        "</div>" +
                        "<div data-role=content>Stuff here</div>" +
                        "</div>");

        // Append the new page info pageContainer
        newPage.appendTo($.mobile.pageContainer);        
    }
});
于 2013-03-31T22:48:07.040 に答える