5

我正在此页面的帮助下进行转换:http: //jquerymobile.com/demos/1.2.0/docs/pages/page-transitions.html

单击链接时我会进行转换:

<a href="#page1" data-transition="slide" data-role="button" > Submit </a>

这使得幻灯片过渡。

如果我在哪里将 data-transition 属性更改为 data-transition="none" 我将不会得到任何转换。

现在我想在转换之前做一些逻辑。换句话说,如果我可以使用 javascript 执行相同的转换,那就太好了。这就是我现在所拥有的:

function GoTopage1()
{
    if(someVar == true)
        window.location = "#page1";
}

我现在的链接是这样的:

<a onclick="GoTopage1()" data-transition="slide" data-role="button" > Submit </a>

该代码有效,但我失去了幻灯片过渡。单击链接时,我会得到默认过渡,即淡入过渡。我怎么能用代码进行转换?


编辑

最后我想出了如何做到这一点:

我放置了一个隐藏链接:

<a id="t1" href="#page1"  data-transition="slide" ></a>

然后在我的功能上我现在有:

function GoTopage1()
{
    if(someVar == true)
        $("#t1").click(); // simulate link click        
}
4

2 回答 2

1

我怀疑因为你绑定onclick了锚标签,你的方法首先发生,然后 jQuery mobile 可能会说“我们已经在那里 - 不需要转换”。

我想知道您是否可以使用$.mobile.changePage()jQuery-mobile 中的方法而不是设置 window.location。这可能会通过 jQuery-mobile 代码推动活动并使转换工作。

或者,由于 jQuery 页面逻辑基于 hashchange 事件,也许您应该设置 location.hash 而不是 location。你可以在这里查看文档:

http://jquerymobile.com/demos/1.2.0/docs/pages/page-navmodel.html

编辑:从 jQuery Mobile 1.4 开始, $.mobile.changePage() 已被弃用,而应使用 $.mobile.pageContainer.pagecontainer("change") 。例子:

$.mobile.pageContainer.pagecontainer("change", "#page1", {transition: "slide"})
于 2013-01-26T23:27:05.340 回答
0

您可以使用以下内容:

  1. $.mobile.navigate("#bar", {transition: "slide", info: "info about the #bar hash"});
  2. $.mobile.pageContainer.pagecontainer("change", "target", {transition: "flow", changeHash: false, reload: true})

还值得注意的是,$.mobile.changePage()现在已弃用,不应再使用。 http://api.jquerymobile.com/jQuery.mobile.changePage/

只是想我会根据我从其他线程中学到的东西来回答这个问题。我没有足够的声誉来放置其余的链接。只需在 Google 上搜索代码即可找到它们各自的 StackOverflow 线程。

于 2014-03-13T04:19:49.600 回答