【问题标题】:Skipping steps in Bootstrap Tour?在 Bootstrap Tour 中跳过步骤?
【发布时间】:2015-04-02 11:11:25
【问题描述】:

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

在每个步骤中,弹出窗口都包含“Prev”、“Next”、“End Tour”按钮。 我没有使用“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) 方法也没有用。

【问题讨论】:

    标签: jquery twitter-bootstrap


    【解决方案1】:

    阅读文档后 - 没有现成的方法可以跳过步骤。

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

    简单的解决方案(对于这个场景,只需 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);        
        }
    });
    

    跳过

    跳过

    不太简单的解决方案(适用于所有场景): 2.) 有一个方法:a.) 找到所有步骤 b.) 捕捉点击的按钮(跳过)和它的步骤号(比如说 x)) c.) goTo step x+1

    高级解决方案:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 请解释你的答案——这只是代码块
      猜你喜欢
      • 2014-12-09
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多