Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript-jQuery mobile在函数完成后执行转换_Javascript_Jquery Mobile - Fatal编程技术网

javascript-jQuery mobile在函数完成后执行转换

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执行页面转换之前完全完成一个函数 --更新-- 下面是一个供

我目前正在使用当前的html进行jQuery移动页面转换:

<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;
    }
};