javascript - jQuery Mobile 弹出动态内容不刷新

标签 javascript android html jquery-mobile popup

我有一个跨多个页面的通用 JQM 弹出窗口。在每个页面中,弹出窗口的内容都会使用页面中的数据进行刷新。第一次加载页面时,我可以在弹出窗口中看到刷新的内容。但是,当我将新数据加载到弹出 div 时,我仍然在弹出小部件上获取旧数据。

如果我检查弹出窗口的innerHTML,它会为我提供新内容,但在弹出窗口上看不到它们。

这是我的示例代码:

    <body>
    <div id="common-popup">

       <div id="data-popup" data-role="popup">';
         <p>Name: N/A<p> 
         <p>DOB: N/A <p>
       </div> <!--Popup div ends -->
    </div>

    <div data-role="page" id="page1">
        <input type='text' id='p1_name' value=''>Name: </input>
        <input type='text' id='p1_dob' value=''>DOB: </input>
        <button class="update-data" id="b1"/>
       <a href="#data-popup"> Watch Data </a>
    </div>

    <div data-role="page" id="page2">
        <input type='text' id='p2_name'>Name: </input>
        <input type='text' id='p2_dob'>DOB: </input>
        <button class="update-data" id="b2"/>
        <a href="#data-popup"> Watch Data </a>
    </div>
   </body>
<script type="text/javascript">
   $('.update-data').on('vclick', function(){
      var id = $(this).id;
          id = id.split('');
       var htm = '<div id="data-popup" data-role="popup">';
           htm += '<p>Name: ' + $('#p' + id[1] + '_name').val()  +'<p>';
           htm += '<p>Name: ' + $('#p' + id[1] + '_name').val()  +'<p>';

         $('#common-popup').html(htm).trigger('create');
     });

</script>

在上面的代码中,如果我使用以下命令检查innerHTML:

console.log("通用内部Html:"+ document.getElementById('common-popup').innerHTML);

我可以看到更新的内容,但是当我打开小狗时,我仍然看到旧的内容。请告诉我如何刷新弹出窗口的内容

JS fiddle :http://jsfiddle.net/bhavik89/49QwL/1/

在Fiddle中我只能看到初始内容,更新时不会刷新

最佳答案

不要将弹出窗口放在 DIV 中,只需将其放在正文下方即可。然后在重新创建它时,将顶级 DIV 保留在那里并仅替换内容:

<div id="data-popup" data-role="popup" data-theme="a" >
   <div >
       <p>Name: N/A</p> 
       <p>DOB: N/A </p>
   </div>
</div>

确保您的链接具有 data-rel="popup":

<a href="#data-popup" data-rel="popup"> Watch Data </a>

为您的更新按钮提供一些文本,以便我们可以看到该按钮:

<button class="update-data" id="b1" >Update</button>

完成此操作后,在文档准备就绪时初始化弹出窗口,然后单击更新按钮,替换弹出窗口 HTML,调用enhanceWithin(),最后调用 popup("refresh") 来更新弹出窗口小部件:

$(function(){
    $("#data-popup").enhanceWithin().popup();
});

$(document).on("pagecreate", "#page1", function(){
   $('.update-data').on('vclick', function(){
      var id = $(this).prop("id");
          id = id.split('');

       var htm = '<div>';
           htm += '<p>Name: ' + $('#p' + id[1] + '_name').val()  +'<p>';
           htm += '<p>DOB: ' + $('#p' + id[1] + '_dob').val()  +'<p>';
           htm +=  '</div>';

       $("#data-popup").html(htm).enhanceWithin().popup("refresh");       
   });    
});

Here is a working DEMO

关于javascript - jQuery Mobile 弹出动态内容不刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25106396/

相关文章:

java - 首先将 ListView 项目添加到列表底部

javascript - 转.js : Responsive Design With a Double-Page Viewing Format Not Working

css - 如何修复两个 div 之间的自动边距?

javascript - 如何重构if-else代码段?

javascript - 如何在隐藏 block 内使用省略号格式的多行文本进行裁剪?

android - 保留通过 native 代码创建的egl上下文

android - 基于 Cordova 的项目到 Fabric

html - youtube Iframe 视频不适用于 safari

javascript - 为每个路径都在 raphael.js 集合中的不同路径应用不同的颜色

javascript - JavaScript 客户端应用程序中的权限/ACL