Jquery mobile collapsible在ajax get中不起作用

Posted

技术标签:

【中文标题】Jquery mobile collapsible在ajax get中不起作用【英文标题】:Jquery mobile collapsible doesn't work in ajax get 【发布时间】:2017-02-20 11:39:19 【问题描述】:

Jquery mobile data-role="collapsible" 不适用于 ajax get。你可以在下面找到我的代码。这是我打开页面时的问题,可折叠数据显示在一个块中。我错过了什么我真的需要帮助。 谢谢

<html lang="fr">
<head>

  <!-- Carracteres -->
  <meta charset="utf-8">
  <!-- Carracteres -->

  <!-- Desactiver le zoom -->
  <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
  <!-- Desactiver le zoom -->

  <!-- CSS Animation -->
  <link rel="stylesheet" href="css/stylish-portfolio.css">
  <link rel="stylesheet" href="css/font-awesome.min.css">
  <link rel="stylesheet" href="css/jquery.mobile.css">
  <!-- CSS Animation -->

</head>

<body>
    <div class="loader"></div> 

    <!-- Page d'accueil -->
    <div data-role="page" class="touch" style="width:100%;background:#000;" id="indexpage">
        <div class="topbardiv"><p style="color: #fff;font-size: 18px;line-height: 44px;">A venir</p></div>
        <div style="height:46px;"></div>
        <!-- Text -->
        <div style="background-color:#000;" id="avenir"></div>
            <!-- Text -->
            <a href="#right-panel" data-icon="arrow-l" data-iconpos="notext" data-shadow="false" data-iconshadow="false" class="ui-icon-nodisc"><img class="animated infinite pulse" style="height: 19px;padding: 6.25px 6.25px 6.5px 6.5px;position: fixed;top: 5;right: 5;z-index: 9999999999;" src="img/menu.png"></a>

            <div data-role="panel" id="right-panel" data-display="push" data-position="right">
            <li>
                <div class="logomenudiv"><img class="logomenu" src="img/logo.png"></div>
            </li>
            <li>
                <p onclick = $("#menu-close").click();location.href='#qui_popup'; style="padding-top: 10px;padding-left: 10px;"><i class="fa fa-users" aria-hidden="true"></i> Le CAFÉ THÉÂTRE</p>
            </li>
            <li>
                <p onclick = $("#menu-close").click();location.href='#tarifs_popup'; style="padding-left: 10px;"><i class="fa fa-ticket" aria-hidden="true"></i> Tarifs et abonnements</p>
            </li>
            <li>
                <p onclick = $("#menu-close").click();location.href='#tapas_popup'; style="padding-left: 10px;"><i class="fa fa-glass" aria-hidden="true"></i> Tapas et Cocktails</p>
            </li>
            <li>
                <p onclick = $("#menu-close").click();location.href='#venir_popup'; style="padding-left: 10px;"><i class="fa fa-map-marker" aria-hidden="true"></i> Venir au CAFÉ THÉÂTRE</p>
            </li>
                <div style="margin-top: 25px;text-align: center; width:100%;">
                    <a href="tel:0651809690" style="display:inline"><img src="img/tel.png" style="width: 45px;"></a>
                    <a href="mobincube://action/sms/0651809690%20Bonjour%2C" id="doubleLink" style="display:inline"><img src="img/twitter.png" style="width: 45px;"></a>
                    <a href="mailto:defoncederire@gmail.com" style="display:inline"><img src="img/mail.png" style="width: 45px;"></a>
                    <a href="mobincube://action/browser/https%3A%2F%2Fwww.facebook.com%2Fdefoncederire%2F%3Ffref%3Dts" style="display:inline"><img src="img/facebook.png" style="width: 45px;"></a>
                    <a href="mobincube://action/browser/http%3A%2F%2Fwww.defoncederire.com%2F" style="display:inline"><img src="img/internet.png" style="width: 45px;"></a>
                </div><!-- /panel -->
            </div>
    </div>
    <!-- Page d'accueil -->

    <!-- Qui sommes nous popup -->
    <div data-role="page" class="touch" style="width:100%;background:#000;" id="qui_popup">
        <div class="topbardiv"><p style="color: #fff;font-size: 18px;line-height: 44px;">Défonce de Rire</p></div>
        <div style="height:46px;"></div>
        <!-- Text -->
        <div style="height:100%;width;100%;background:#000;">
            <img src="img/1.jpg" >
            <div style="padding:10px;background:#000;">
                <p style="text-align:center;">Horaires des Spectacles<br>
                Du mercredi au samedi : 20h00<br>
                Dimanche :  15h00<br>
                <br>
                *Ouverture des portes 1h00 avant le début du spectacle<br>
                *Fin du service 15 minutes avant le début du spectacle<br>
                + Restez après le spectacle, le bar ouvre de nouveau et profitez d'un moment pivilégié avec les comédiens<br></p>
            </div>
        </div>
        <!-- Text -->
        <div onclick="location.href='#indexpage';" class="bttt1">
            <img style="position: fixed;top: 0;right: 0;z-index: 1;height: 19px;padding: 11.25px 11.25px 6.5px 6.5px;" src="img/exit.png">
        </div>
    </div>
    <!-- Qui sommes nous popup -->

    <!-- Tapas popup -->
    <div data-role="page" class="touch" style="width:100%;background:#000;" id="tapas_popup">
        <div class="topbardiv"><p style="color: #fff;font-size: 18px;line-height: 44px;">Tapas et Cocktail</p></div>
        <div style="height:46px;"></div>
        <!-- Text -->
        <h2>Boissons</h2>
        <img src="img/Boissons_defonce_de_rire.png" style="width:100%">
        <td>
            <p><strong>Pina Colada ou Mojito : 6,5€<br></strong><span style="font-size: 8pt;"><strong></strong></span><strong><br></strong><br><strong>Sirop à L'eau : 1.50€<br></strong><span style="font-size: 8pt;"><span style="font-size: 8pt;">Fraise, Menthe, Grenadine, Pêche</span><em><em>, Citron, Lichi</em></em><em><br></em></span><strong>Diabolo : 2.00€<br></strong><span style="font-size: 8pt;">Fraise, Menthe, Grenadine, Pêche</span><em><em>, Citron, Lichi<br></em></em><strong>Jus de Fruits : 2.50€</strong><em><em><br></em></em><span style="font-size: 8pt;">Orange, Tomate, ACE, Ananas, Fraise, Abricot, Lichi</span><br><strong>Sodas : 2.50€</strong><strong><br></strong><span style="font-size: 8pt;">Coca-Cola, Ice-Tea, Perrier, Orangina, Limonade</span><br><strong>Bières bouteille : 3.50€</strong><br><span style="font-size: 8pt;">Guiness, Leffe, Corona, Desperados, Hoegaarden</span><br><strong>Kir : 4.00€<br></strong><span style="font-size: 8pt;">Mûre, </span>cassis, violette<br><strong>Kir Royal : 5€<br><br>Vin Rouge/Rosé/Blanc au verre : 3.5€<br>Vin&nbsp;<strong>Rouge/Rosé/Blanc</strong> à la Bouteille : 15€</strong><br><span style="font-size: 8pt;"></span></p>
            <p><strong>Thé et Tisane: 2€</strong><br><span style="font-size: 8pt;">Choisissez votré parfum dans notre Coffret de saveurs variées.</span><br><br><strong>Café : 2€</strong><br><span style="font-size: 8pt;">Café double expresso artisanal ou café allongé&nbsp;</span><br><strong>&nbsp;</strong></p>
        </td>
        <td>
            <p><strong>A Grignoter : 6€</strong></p>
            <p><span style="font-size: 8pt;">Tapenades diverses + Olives<br></span></p>
            <p><span style="font-size: 8pt;">&nbsp;</span></p>
            <p><strong><span style="font-size: 8pt;">Chiffonade de Jambon Cru : 6<strong>€</strong></span></strong></p>
            <br>
            <h2>Tapas</h2>
            <img src="img/tapas_defonce_de_rire.png" style="width:100%">
            <p><span style="font-size: 14pt;"><strong>Les Plateaux Gourmands :</strong></span></p>
            <p><em><strong><br>Le Grand Fromager : 18€<br></strong></em><span style="font-size: 8pt;">Assortiment de 5 fromages d'Auvergne </span><em><span style="font-size: 8pt;"><strong><br><br></strong></span><strong>L'auvergnat : 18€</strong><span style="font-size: 8pt;"><strong><br></strong></span></em><span style="font-size: 8pt;">Ass</span><span style="font-size: 8pt;">ortiment de fromages et charcuteries</span><em><br></em><em><br><strong>Plateau Végétarien : 18<em><strong>€</strong></em></strong><br>(Sur commande 24 heures avant le spectacle )&nbsp;</em></p>
            <p><span style="font-size: 14pt;"><strong>La touche sucrée :</strong></span></p>
            <p><strong>Café/Thé/Chocolat Gourmand : 6,5€</strong><br>Café, thé ou chocolat accompagné de douceurs sucrées</p>
        </td>
        <!-- Text -->
        <div onclick="location.href='#indexpage';" class="bttt1">
            <img style="position: fixed;top: 0;right: 0;z-index: 1;height: 19px;padding: 11.25px 11.25px 6.5px 6.5px;" src="img/exit.png">
        </div>
    </div>
    <!-- Tapas popup -->

    <!-- Tarifs et abonnements popup -->
    <div data-role="page" class="touch" style="width:100%;background:#000;" id="tarifs_popup">
        <div class="topbardiv"><p style="color: #fff;font-size: 18px;line-height: 44px;">Tarifs et abonnements</p></div>
        <div style="height:46px;"></div>
        <!-- Text -->
        <div style="width;100%;background:#000;text-align:center;">
            <p style="font-size: 20px;font-weight: bold;">TARIFS BILLETTERIE :</p>
            <img src="img/theatre.jpg" style="width:30%">
            <p>-Plein Tarif : 14 €<br>-Tarif Réduit : 11 €</p>
            <p style="font-size: 20px;font-weight: bold;">TARIFS ABONNEMENTS :</p>
            <img src="img/defonce_de_rire_ABONNEMENTS_copie.jpg" style="width:30%">
            <p>Carte 10 Spectacles : 105 €<br>
            <p style="font-size: 20px;font-weight: bold;">TARIFS PASS SPECTACLES :</p>
            <img src="img/pass_rire.jpg" style="width:30%">
            <p>Pass Soirée : <br>-2 Personne (2 entrées spectacle + 1 Plateau 2 pers + 2 Boissons) : 50 €</p><br>
        </div>
        <!-- Text -->
        <div onclick="location.href='#indexpage';" class="bttt1">
            <img style="position: fixed;top: 0;right: 0;z-index: 1;height: 19px;padding: 11.25px 11.25px 6.5px 6.5px;" src="img/exit.png">
        </div>
    </div>
    <!-- Tarifs et abonnements popup -->

    <!-- Venir au café popup -->
    <div data-role="page" class="touch" style="width:100%;background:#000;" id="venir_popup">
        <div class="topbardiv"><p style="color: #fff;font-size: 18px;line-height: 44px;">Venir au café</p></div>
        <div style="height:46px;"></div>
        <!-- Text -->
        <div style="height:100%;width;100%;background:#000;">
            <img src="img/0.jpg" >
            <div style="padding:10px;background:#000;height:80%">
                <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d1654.556672009112!2d3.0785118565539458!3d45.77877426203212!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47f71bdc9faf1b73%3A0x5f6b2507363449a8!2zRMOpZm9uY2UgZGUgUmlyZSAtIENhZsOpIFRow6nDonRyZQ!5e0!3m2!1sfr!2sfr!4v1466777862750"    frameborder="0" style="border:0" allowfullscreen></iframe>
                <div onclick="location.href='mobincube://action/route/45.7783992%2C3.0795084999999744%20Defonce%20de%20Rire';" class="venir">Venir au Café Théâtre</div>
            </div>
        </div>
        <!-- Text -->
        <div onclick="location.href='#indexpage';" class="bttt1">
            <img style="position: fixed;top: 0;right: 0;z-index: 1;height: 19px;padding: 11.25px 11.25px 6.5px 6.5px;" src="img/exit.png">
        </div>
    </div>
    <!-- Venir au café popup -->



<!-- jQuery -->
<script src="js/jquery.js"></script>
<script src="js/jquery.mobile.js"></script>
<!-- jQuery -->

    <!-- Chargement -->
    <script type="text/javascript">
        $(window).load(function() 
            $(".loader").fadeOut("slow");
        )

        $.ajaxSetup (
            cache: false
        );
    </script>
    <!-- Chargement -->

    <script>
        document.getElementById("doubleLink").onclick = function () 
        window.open("sms:0651809690", "", "width=640,height=400");
            
    </script>

<script>          
$(document).ready(  
function()

$.ajax( 
type: "GET",
url: "http://s604712774.onlinehome.fr/cafetheatre/doc.xml",
dataType: "xml",
success: function(xml) 

$(xml).find('avenir').each(   
function()

var titre = $(this).find('titre').text();
var photo = $(this).find('photo').text();
var courtedesc = $(this).find('courtedesc').text();
var lien = $(this).find('lien').text();
var date = $(this).find('date').text();
$('<div style="background:#000;text-align: center;margin-left: 10px;margin-right: 10px;margin-top: 10px;margin-bottom: 10px;border-bottom: solid 1px #fff;"><p style="text-align: center;">' +date+ '</p><img  src="' +photo+ '"><h2 style="text-align: center;font-size: 16px;padding-top: 5px;color: #ff0000;padding-bottom: 5px;">' +titre+ '</h2><div data-role="collapsible"><h4>Voir le résumé</h4><p class="body1010" style="margin-bottom:10;">' +courtedesc+ '</p></div></div>').appendTo('#avenir');
);

);

); 
</script>  

</body>
</html>

【问题讨论】:

【参考方案1】:

首先,使用 jQM 的 pagecreate 事件而不是常规的 jQuery 文档准备。

$(document).on("pagecreate","#page1", function() 

  //ajax get goes here

其次,jQM 增强了可折叠创建内容 div 类 .ui-collapsible-content

因此将内容插入该类,例如:

$("#avenir .ui-collapsible-content").append("<div>Inserted from AJAX call</div>");
$("#avenir").enhanceWithin();

【讨论】:

以上是关于Jquery mobile collapsible在ajax get中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

jQuery-Mobile可折叠slideDown效果

JQuery-Mobile 可折叠展开/折叠事件

设置jquery-mobile展开后可折叠高度

jQuery Mobile 引号内引号内引号

无法从 jQuery mobile 可折叠设备中移除蓝色光晕

jQuery Mobile 干扰 Google Maps v3 API