使用JQuery mobile渲染div

时间:2014-05-29 04:03:16

标签: html jquery-mobile render

我有一个div每3秒刷新一次,但当div刷新时,css不会渲染。这是我的代码。

in html

 <div id="statusbar"></div>

在js

$( document ).ready(function(){
update2();
function update2() {
        $('#statusbar').load('statusbar.php');
        $('#statusbar').trigger('create');
        statustimeout = setTimeout("update2()", 3000);
}
});

我正在使用JQuery mobile。我是新手所以请详细说明。 TY提前!

3 个答案:

答案 0 :(得分:1)

update2()不能是字符串,它必须是一个函数(所以只需要function(){ update2() }而不是"update2()")。您的函数调用也需要在定义之后。

请参阅this fiddle for an example.

答案 1 :(得分:1)

你做错了。

加载是异步 AJAX 功能,因此您无法直接调用触发器(&#39;创建&#39;)。基本上代码永远不会等待异步函数结束,代码执行会更进一步,触发(&#39;创建&#39;)将无法增强任何内容。

要正确执行此操作,您需要执行加载功能并等待成功回调才能触发,如下所示:

$('#statusbar').load("statusbar.php", function() {
    alert( "Load was performed." );
    $('#statusbar').trigger('create');
});

其次,您正在以错误的方式使用触发器(&#39;创建&#39;)。它应该在 data-role =&#34; content&#34; div上触发,因为它的主要目的是增强整个内容,而不是它的一部分。就像触发器(&#39; pagecreate&#39;)用于增强整个页面一样,应该在 data-role =&#34; page&#34; div。如果您使用的是jQuery Mobile 1.4,那么您应该使用 enhanceWithin()

所以一切都应该是这样的:

$('#statusbar').load("statusbar.php", function() {
    alert( "Load was performed." );
    $('#statusbar').enhanceWithin();
});

答案 2 :(得分:0)

E Rullmann总结道。你会想做那样的事情。或者考虑做这样的事情。

$(document).ready(function () {
   var update2 = function () {

      $('#statusbar').load('statusbar.php');
      $('#statusbar').trigger('create');

   };

   setTimeout(function () {
      update2(); 
      /* this function isn't hoisted, 
         so you can only call it after it's declared */
      }, 5000 /*your timeout value*/);
});