0

因此,我使用以下代码为我的各种 JQM 页面初始化动态内容,但是 pageinit 显然是用于 JQM 页面初始化的最佳方法,但它本身并没有清理干净。

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

    $(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 吗?有没有更好的方法来解决这个问题?

4

3 回答 3

2

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

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

在此序列中,每次返回第二页时都会触发第二页的 pageinit。

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

于 2012-10-25T12:11:31.070 回答
1

一起删除和追加怎么样?

  $('#footer').remove('p').append('<p>  Today: ' + fullDate + '</p>');
于 2012-09-05T06:06:38.500 回答
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);

});
于 2012-09-05T14:19:17.183 回答