1

我有一个情况,当我有一个包含 11 个步骤的游览时。

在每个步骤中,弹出窗口都包含“Prev”、“Next”、“End Tour”按钮。
我没有使用“结束游览”来“跳过”,而是尝试跳过所有步骤并转到第 11 步,但我无法让它工作。

steps: [
    {
        element: "#mobile",
        title: "Mobile Number",
        content: "Click ‘Next’ to view the next search field, Click ‘Previous’ to view the previous search field and click ‘skip’ to select End result.",
        placement: "right",
        backdrop: true,
        orphan: true,
        template: function (step) {
            return "<div class='popover tour'><div class='arrow'></div><h3 class='popover-title'></h3><div class='popover-content'></div><div class='popover-navigation'><button class='btn btn-xs btn-pink' data-role='prev'>« Prev</button><span>&nbsp;</span><button class='btn btn-xs btn-danger' data-role='next'>Next »</button><span>&nbsp;</span><button class='btn btn-xs btn-success' data-role='skip'>Skip</button> </div>   </nav>  </div>"
        },
        onNext: function () {
            dir = 'next';
        },
        onPrev: function () {
        },
        onShown: function () {
        }
    }
]

在这里,我将数据角色用作“跳过”。我如何将其用作类似的功能onShow()onEnd()等等。

我试过goTo(i)的方法也不起作用。

4

2 回答 2

3

因此,在阅读 DOC 之后 - 没有现成的方法可以跳过步骤。

但是我们可以很容易地构建我们自己的。


简单的解决方案(对于这种情况,只需 3 个步骤):

1.)添加按钮角色跳过(我们的,新的,角色):

<button class='btn btn-xs btn-success' data-role='skip'>Skip</button>

2.)编写跳过按钮单击的跳过方法:

$("body").on("click","button",function(){
    if($(this).attr("data-role") === 'skip'){
        alert("skip pressed :)");
        tour.goTo(2);        
    }
});

不太简单的解决方案(适用于所有场景):

1.)添加带有角色跳过的按钮(我们的,新的,角色):

<button class='btn btn-xs btn-success' data-role='skip'>Skip</button>

...

<button class='btn btn-xs btn-success' data-role='skip'>Skip</button>

...

<button class='btn btn-xs btn-success' data-role='skip'>Skip</button>

...

etc

2.) 有一种方法:a.) 找到所有步骤 b.) 捕捉点击的按钮(跳过)和它的步骤号(比如说 x)) c.) goTo 步骤 x+1


高级解决方案

扩展 Jquery 插件并为其添加跨场景代码

于 2014-11-07T07:41:18.283 回答
0

你可以使用下面的代码来实现这个,对我来说它的工作

 onNext: function(tour){
  var curr=parseInt(tour.getState("current_step"));
  while(true){
    curr+=1;
    var step=tour.getStep(curr);
    //TODO: check if it's undefined
    if($(step.element).length){
      tour.goto(curr);
      return curr;
    }
  }
},
onPrevious: function(tour){
  var curr=parseInt(tour.getState("current_step"));
  while(true){
    curr-=1;
    var step=tour.getStep(curr);
    //TODO: check if it's undefined
    if($(step.element).length){
      tour.goto(curr);
      return curr;
    }
  }
}
于 2016-02-23T13:53:44.820 回答