所以我使用以下代码为我的各种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吗?有没有更好的方法来解决这个问题?
答案 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);
});