不要禁用AJAX链接,你可以劫持链接的点击事件,并决定是否使用$.post()
:
$(document).delegate('a', 'click', function (event) {
event.preventDefault();
var $this = $(this),
href = $this.attr('href');
if ($this.hasClass('ajax-post')) {
var data = {};
if (href.indexOf('?') > -1) {
var tmp = href.split('?')[1].split('&'),
itmp = [];
for (var i = 0, len = tmp.length; i < len; i++) {
itmp = tmp[i].split('=');
data.[itmp[0]] = itmp[1];
}
}
$.mobile.showPageLoadingMsg();
$.post(href, data, function (serverResponse) {
$('body').append(serverResponse);
$.mobile.changePage($('#page-id'));
$.mobile.hidePageLoadingMsg();
});
} else {
$.mobile.changePage(href);
}
});
上面的代码希望你将
ajax-post
类添加到任何你想使用
$.post()
方法的链接中。
一般来说,
event.preventDefault()
很有用,可以停止事件的任何其他处理,以便你可以按照自己的意愿处理事件。如果你使用
event.preventDefault()
,你必须将
event
声明为函数参数。
此外,你的代码中不需要使用
.each()
。
$('a').attr("data-ajax", "false");
这将正常工作。
您还可以通过像这样绑定到mobileinit
事件来全局关闭AJAX链接:
$(document).bind("mobileinit", function(){
$.mobile.ajaxEnabled = false;
});
来源:http://jquerymobile.com/demos/1.0/docs/api/globalconfig.html
全局配置是通过
$.mobile.config
对象来进行设置和控制的。它包含了对于整个jQuery移动框架的核心设置,例如默认的页面转场效果、页面加载时的等待图标以及Touch事件的默认触发时间和间隔时间。你可以在jQuery文档的官方网站上找到更多有关该对象的详细信息。
$.mobile.ajaxEnabled = false;
,所以你说得对!谢谢! - bobek