javascript-jQuery mobile在函数完成后执行转换
我目前正在使用当前的html进行jQuery移动页面转换:javascript-jQuery mobile在函数完成后执行转换,javascript,jquery-mobile,Javascript,Jquery Mobile,我目前正在使用当前的html进行jQuery移动页面转换: <a href="#page2" data-role="button" data-transition="flip" onclick="save()">page2</a> 这里的save()函数用于在当前页面上保存画布 然而,save()函数似乎与页面转换同步运行,因此有时页面转换时,没有完全保存我想要的信息 有没有办法在jQuery Mobile执行页面转换之前完全完成一个函数 --更新-- 下面是一个供
<a href="#page2" data-role="button" data-transition="flip" onclick="save()">page2</a>
这里的save()
函数用于在当前页面上保存画布
然而,save()
函数似乎与页面转换同步运行,因此有时页面转换时,没有完全保存我想要的信息
有没有办法在jQuery Mobile执行页面转换之前完全完成一个函数
--更新--
下面是一个供大家使用的JSFIDLE示例:
(注意控制台中的保存触发器
之前的pagebeforechange
触发)尝试以下解决方案:
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;
}
}
第一次执行此函数不会触发转换(返回false
阻止执行下一个附加的事件处理程序)。第二次执行将触发,但不会触发发送。当然,将transition
变量放入全局上下文不是一个好的做法,但这只是一个如何处理这个问题的想法
我还认为,在onclick(HTML)中,应该有returnsave()
根据提供的小提琴进行编辑:
玩小提琴时,我稍微改变了a
元素:
<a id="goto_trigger" href="#p2" data-role="button" onclick="return save()">Go To Page 2 with return</a>
现在它可以正常工作了。谢谢你的回复,但遗憾的是它不起作用。我也尝试过onclick=“return false”
只是为了试验,但即使return false
页面更改也会被触发。我发布了一个简化的JSFIDLE示例,希望它能有所帮助。我意识到,由于我目前使用的AngularJs jqm适配器,尽管出现了return false
,转换仍会被触发。如果您可以使用您概述的方法修改我在JSFIDLE上提供的示例,我将接受这个答案。@dk123-我刚刚完成了。代码正在使用提供的JSFIDLE。谢谢,这非常有用:D这是经过修改的JSFIDLE及其实现:
$(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;
}
};