jQuery Mobile - .on('pageinit')for 1.7.1

时间:2012-09-05 00:26:14

标签: jquery-mobile

所以我使用以下代码为我的各种JQM页面初始化动态内容,但是pageinit,这显然是用于JQM页面初始化的最佳方法,它不会自行清理。

Ex)我有一个动态的页脚。它打印今天的日期。在我的初始化代码中,我有以下内容:

    $(document).on('pageinit', '#dashboardPage', function() {

      var currentTime = new Date()
      var month = currentTime.getMonth() + 1
      var day = currentTime.getDate()
      var year = currentTime.getFullYear()
      var fullDate = month + "-" + day + "-" + year;

      $('#footer').append('<p>  Today: ' + fullDate + '</p>');

    });

问题:每次我离开并返回此页面时,pageinit再次触发并向我的页面添加另一个页脚。清理是我的工作吗? JQM不应该知道不要一次又一次地烧掉pageinit吗?有没有更好的方法来解决这个问题?

3 个答案:

答案 0 :(得分:2)

恕我直言,OP的真正问题在于,当您导航回页面时,每次都会触发pageinit。这似乎发生在加载ajax的页面上,但不适用于链中的“第一”页面:

Page one --(ajax)-->Page two--(ajax)-->Page three--(ajax)-->Back to page two

按照这个顺序,每次回到第二页时,第二页的pageinit都会被触发。

我尝试通过指定data-dom-cache="true"来避免此行为,但它没有帮助。 恕我直言这是JQM框架中的一个错误。

答案 1 :(得分:1)

如何一起移除和追加?

  $('#footer').remove('p').append('<p>  Today: ' + fullDate + '</p>');

答案 2 :(得分:0)

您应该创建专用于日期的范围,并且只更新此内容,例如将<p> Today: <span id="dateSpan"></span></p>添加到页脚,然后稍微修改您的代码

$(document).on('pageinit', '#dashboardPage', function() {

  var currentTime = new Date()
  var month = currentTime.getMonth() + 1
  var day = currentTime.getDate()
  var year = currentTime.getFullYear()
  var fullDate = month + "-" + day + "-" + year;

  $('#dateSpan').html(fullDate);

});