使用jQuery mobile,我使用列表视图,其中包含上一页和下一页的分页链接。一切正常,但我不希望将prev和next页面添加到历史堆栈中。我们的想法是,回到实际的上一页。
我发现这样做的唯一方法就是在a标签上添加data-rel =“dialog”,但我不希望它成为弹出式对话框。
否则我试图添加
$.mobile.nonHistorySelectors="dialog,pagination"
到mobileinit事件,将属性data-rel =“pagination”添加到a标签。但是这只会在单击链接时抛出错误(即使没有将nonHistorySelectors添加到mobileinit事件中也会发生错误)。
编辑:
我发现最接近的是这个JS
<script type="text/javascript">
$(".page-prev").click(function(e) {
e.stopPropagation();
e.preventDefault();
$.mobile.changePage(this.href, {changeHash:false, reverse:true});
});
$(".page-next").click(function(e) {
e.stopPropagation();
e.preventDefault();
$.mobile.changePage(this.href, {changeHash:false});
});
</script>
和这个HTML
<a href="/blog?page=1" class="page-prev" data-role="button" data-icon="arrow-l">Prev</a>
<a href="/blog?page=3" class="page-next" data-role="button" data-icon="arrow-r">Next</a>
这似乎可以很好地保持浏览器历史记录的更新,但有时当点击下一页时,滑动的页面会做一些时髦的事情,比如加载/滑动两次。此外,它没有做的一件事是,如果我从这里导航到一个页面并返回,它将在第1页返回。
答案 0 :(得分:1)
没有任何机制可以静默删除任何浏览历史记录。
您应该使用AJAX填充列表。
因此,您的链接将显示为<a href="javascript:renderNextPage()">
答案 1 :(得分:1)
将data-rel="back"
添加到锚标记是否有效?
这是jQuery Mobile演示文档中建议的解决方案,在'Back linking'下。
http://jquerymobile.com/demos/1.0b1/#/demos/1.0b1/docs/pages/docs-pages.html
答案 2 :(得分:1)
这样做,应该没问题:
// Fix for back buttons
$(document).on('vclick', '[data-rel=back]', function(e) {
e.stopImmediatePropagation();
e.preventDefault();
// $.mobile.back(e);
var back = $.mobile.activePage.prev('[data-role=page]');
$.mobile.changePage(back, {
transition: 'slide',
reverse: true,
changeHash: false
});
});
答案 3 :(得分:0)
我遇到了同样的问题,我的解决方案是将网站导航和分页导航分成两个单独的导航菜单。所以我有网站导航的标题导航,并将下一个/上一个导航按钮添加到页面:AJAX Request Help for next/previous page
直播示例:
更新:
这是我的意思的一个快速例子:
JS:
var currentPage=1;
loadCurrentPage();
$("#next, #prev").click(function(){
currentPage= ($(this).attr('id')=='next') ? currentPage + 1 : currentPage - 1;
if (currentPage==0)
currentPage=1;
else if (currentPage==101)
currentPage=100;
else
loadCurrentPage();
});
function loadCurrentPage(){
//$('input').attr('disabled','disabled');
$('#displayResults').html('<img src="http://blog-well.com/wp-content/uploads/2007/06/indicator-big-2.gif" />');
$.ajax({
url: '/echo/html/',
data: 'html=Current Page: ' + currentPage+'&delay=1',
type: 'POST',
success: function (data) {
// $('input').attr('disabled','');
$('#displayResults').html(data);
}
});
$('#home').page();
}
HTML:
<div data-role="page" id="home">
<div data-role="content">
<ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f">
<li data-role="list-divider">Home Page</li>
<li><a href="#page2">Page 2</a></li>
</ul>
<input id="next" type="button" value="Next" />
<input id="prev" type="button" value="Previous" />
<div id="displayResults" name="displayResults">
</div>
</div>
</div>
<!-- Page 2 -->
<div data-role="page" id="page2">
<div data-role="content">
<ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f">
<li data-role="list-divider">Page 2</li>
<li><a href="#home">Home Page</a></li>
</ul>
</div>
</div>
答案 4 :(得分:0)
data-rel attr对我有用
<a data-rel="dialog" ...
根据文件
链接 链接(包括具有data-role =“按钮”的链接)和表单提交按钮共享这些属性
data-rel 返回(在历史记录中向后移动一步)
对话框(打开样式为对话框的链接,未在历史记录中跟踪)
外部(用于链接到其他域)
https://demos.jquerymobile.com/1.0/docs/pages/page-links.html