0

我的兜风旅行有问题,当我完成一次旅行时,我想开始第二次旅行。我尝试做的是在 postRideCallback 中执行第二次旅行,但我最终循环了第一次旅行。有人知道如何解决这个问题?

function preview(){
    $('#joyRideTipContent').joyride({
        autoStart : true,
        preStepCallback : function(index, tip) {
            console.log(index);
        },
        postStepCallback : function(index, tip) {
        },
        postRideCallback : function(index, tip) {
            console.log("stop1");
            preview2();
            console.log("stop1.1");
        },
        tipLocation:"left",
        modal : true,
        expose : true
    });
}
function preview2(){
    console.log("stop2.0");
    $('#joyRideTipContent2').joyride({
        preStepCallback : function(index, tip) {
        console.log("stop21.0");
        },
        postStepCallback : function(index, tip) {
        console.log("stop22.0");
        },
        postRideCallback : function(index, tip) {
            console.log("stop23");
            alert("tada")
        },
        tipLocation:"left",
        modal : true,
        expose : true
    });
    console.log("stop2.1");
}

在我的代码(见上文)中,预览是我用来开始兜风之旅的功能,console.log 仅用于测试,没有特定含义

4

3 回答 3

2

我知道这是一个老问题,但我添加了一个检查,调用joyride 的destroy 方法来删​​除之前的教程内容,然后再开始另一个。

function tutorial1(){
    if($('.joyride-tip-content')) {
        $.fn.joyride('destroy')
    }
    $('#joyRideTutorial1').joyride({
        modal:true,
        autoStart : true,
        expose: true
    });
 }
 function tutorial2(){
    if($('.joyride-tip-content')) {
        $.fn.joyride('destroy')
    }
    $('#joyRideTutorial2').joyride({
        modal:true,
        autoStart : true,
        expose: true
    });
 }

到目前为止似乎运作良好。

于 2015-03-04T15:01:58.830 回答
0

为什么不直接在页面 URL 中添加一个查询变量?例如

yoursite.com/page?tour=1
yoursite.com/page?tour=2

完成游览 1 后,您可以在上次游览弹出窗口中获得一个链接,该链接指向 ...?tour=2。

您需要做的是检查服务器上的查询变量(假设这是您的 html 的生成位置)并执行一个简单的 if/else 以在您的 html 页面中输出相关代码,例如

if ($tour == 1) {
   // add tour 1 markup and script here
}
elseif ($tour == 2){
  // add your 2 markup and script here
}

这将意味着 html 输出将永远只有一个旅游信息。你现在这样做的方式有点混乱,因为旅游相互冲突。使用这种简单的方法将确保只有一个游览加载到您的 html 中

于 2014-08-21T15:55:52.537 回答
0

你从哪里开始兜风?你能发布你所有的源代码吗?如果您没有这样做,请尝试:

  function preview(){
    $('#joyRideTipContent').joyride({
        autoStart : true,
        preStepCallback : function(index, tip) {
            console.log(index);
        },
        postStepCallback : function(index, tip) {
        },
        postRideCallback : function(index, tip) {
            console.log("stop1");
            preview2();
            console.log("stop1.1");
        },
        tipLocation:"left",
        modal : true,
        expose : true
    }).foundation('joyride', 'start');
  }
于 2014-07-18T20:26:08.820 回答