该解决方案尝试:
var transition = false;
function save() {
if(!transition) {
var callback = function() {
transition = true;
$("a").click();
};
// your aynchronous code which will trigger callback after it finishes executing
return false;
}
else {
transition = false;
}
}
此功能的第一执行将不会触发过渡(return false
从执行附每下一个事件处理程序阻止)。第二次执行,但不会触发发送。当然,将transition
变量放在全局范围内并不是一个好的做法,但它只是一个想法,可以解决这个问题。
此外,我认为这里面的onclick(在HTML),你应该有return save()
。
编辑根据所提供的FIDDLE:
与小提琴演奏我已经改变了a
元素一点点:
<a id="goto_trigger" href="#p2" data-role="button" onclick="return save()">Go To Page 2 with return</a>
而且脚本应该是这样的:
$(document).bind('pagebeforechange', function(e, data) {
console.log("pagebeforechange");
});
var transition = false;
function save() {
if(!transition) {
setTimeout(function(){
alert("save trigger");
transition = true;
$("#goto_trigger").click();
},3000);
return false;
}
};
现在它按预期工作。
感谢您的回复,但它遗憾地不起作用。我也尝试过'onclick =“return false”'来试验,但即使'返回false'也会触发页面更改。 – dk123 2013-04-23 03:36:32
@ dk123你能发表更多的代码吗? – Karol 2013-04-23 03:45:15
我发布了一个简化的jsFiddle示例,希望它有帮助。 – dk123 2013-04-23 04:08:11