【问题标题】:Bootstrap tabs to move between tabs through buttons Prev/next引导选项卡通过按钮在选项卡之间移动 Prev/next
【发布时间】:2014-01-23 13:38:12
【问题描述】:

“引导选项卡通过按钮 Prev/next 在选项卡之间移动。”

我有一个 javascript 函数,可以让我下一个标签:

$(".btn-style").click
(
    function()
    {
        $('.nav-tabs li:eq(1) a').tab('show');

        $("[class='btn btn-large btn-block btn-success disabled']").removeClass("btn btn-large btn-block btn-success disabled");
        $('.nav-tabs li:eq(1) a').addClass("btn btn-large btn-block btn-success disabled");
    }
);

我的html:

                        <ul class="nav nav-tabs" style="width: 1050px">
                                <li><a href="#Race" class="btn btn-large btn-block btn-success disabled" data-toggle="tab">Race</a></li>
                                <li><a href="#Ace" data-toggle="tab">Ace</a></li>
                                <li><a href="#Deep" data-toggle="tab">Deep</a></li>

                        </ul>


                                <div class="tab-content">


                                        <!-- Race -->
                                        <div class="tab-pane active" id="Race">
                                                     <button class="btn-style" type="submit">Prev</button>
                                                     <button class="btn-style" type="submit">Next</button>

                                         </div>

                                        <!-- ACE -->
                                        <div class="tab-pane active" id="Ace">
                                                     <button class="btn-style" type="submit">Prev</button>
                                                     <button class="btn-style" type="submit">Next</button>

                                        </div>


                                </div>

我需要一个 javascript 或 jquery 函数,通过它我可以在单击各自选项卡中的按钮时一一浏览所有选项卡。任何帮助将不胜感激。

【问题讨论】:

  • 您可以向所有选项卡项添加自定义属性,例如使用 Name tabIdentifier = "tab" + some enumerator 的自定义属性。所以你可以有一个通用的 javascript 方法,它会在单击按钮时触发,它将检索按钮的包装选项卡,即 div 读取这个自定义属性,然后基于枚举器,你可以通过减去或添加来设置上一个或下一个选项卡处于活动状态枚举数加一并选择所需的选项卡。

标签: javascript jquery twitter-bootstrap


【解决方案1】:

Click事件的Next和previous按钮上调用这个常用函数

$('#nxt').on('click', function () {
   moveTab("Next");
});
$('#prv').on('click', function () {
   moveTab("Previous");
});


function moveTab(nextOrPrev) {
   alert(nextOrPrev);
   var currentTab = "";
   $('.nav-tabs li').each(function () {
      if ($(this).hasClass('active')) {
        currentTab = $(this);
      }
   });

   if (nextOrPrev == "Next") {
      if (currentTab.next().length) 
      {
         currentTab.removeClass('active');
         currentTab.next().addClass('active');}
      else {} // do nothing for now

    } else {
      if (currentTab.prev().length) 
      {
        currentTab.removeClass('active');
        currentTab.prev().addClass('active');
      }
      else {} //do nothing for now 
    }
  }

现场演示@http://jsfiddle.net/R3mCY/50/

注意:我已经从 html 中删除了为下一个和上一个按钮添加的点击事件回调,而是在 Jquery 本身中为两个按钮的点击事件附加了一个回调函数

快乐编码:)

【讨论】:

  • @user3193259:代码中的语法很少,我现在已经更正了。
  • 我现在试试,会告诉你的。
  • jsfiddle.net/R3mCY/56 你能修改这个@dreamweiver。只有上面的选项卡在变化,但内容没有变化。变量 i = 1; $('.nav-tabs li:eq(i) a').tab('show');我++; // 我试过了,但它不起作用
  • 你确定没有问题,一旦修复会通知你。
  • 谢谢,必须添加这个,但我想我会事先谷歌,所以你省了我的麻烦:)
【解决方案2】:

我会这样处理:

HTML:

<ul class="nav nav-tabs" style="width: 1050px">
    <li class="active"><a href="#Race" data-toggle="tab">Race</a>
    </li>
    <li><a href="#Ace" data-toggle="tab">Ace</a>
    </li>
    <li><a href="#Deep" data-toggle="tab">Deep</a>
    </li>
</ul>
<div class="tab-content">
    <!-- Race -->
    <div class="tab-pane active" id="Race">
        <button class="btn-style" type="submit">Prev</button>
        <button class="btn-style" type="submit">Next</button>
    </div>
    <!-- ACE -->
    <div class="tab-pane" id="Ace">
        <button class="btn-style" type="submit">Prev</button>
        <button class="btn-style" type="submit">Next</button>
    </div>
</div>

还有 JS:

$(".btn-style").click(function () {
    var target = $(".nav-tabs li.active");
    var sibbling;
    if ($(this).text() === "Next") {
        sibbling = target.next();
    } else {
        sibbling = target.prev();
    }
    if (sibbling.is("li")) {
        sibbling.children("a").tab("show");
    }
});

我从http://getbootstrap.com/javascript/#tabs 获取了正常样式,因为我不想使用所有按钮类。

【讨论】:

  • @user3193259 它对我有用,请看这个小提琴:jsfiddle.net/RRWyf。也许我误解了什么?
  • 是的,谢谢它的工作。但我有同样的问题,只有上面的标签正在改变,但内容没有改变。
  • @user3193259 我的错,看看你实际上不应该自己删除/添加活动类的文档。更新小提琴:jsfiddle.net/RRWyf/1
  • 完美。太感谢了。我现在唯一的问题是如何更改在我的情况下的类“btn btn-large btn-block btn-success disabled”我试过这个 $("[class='btn btn-large btn-block btn-success disabled']").removeClass("btn btn-large btn-block btn-success disabled"); $(this).sibbling("li").addClass("btn btn-large btn-block btn-success disabled");第一行从上一个选项卡中删除 css,但第二行没有将 css 添加到下一个选项卡中。
【解决方案3】:

// 这是最终解决方案(感谢:gpgekko 和dreamweiver)

<!-- Move to other tabs by clicking on the button -->
<script>
$(".a-btn-text").click(function ()
  { 
    var target = $(".nav-tabs li.active");
    var sibbling;

    if ($(this).text() === "Next")
    {
        sibbling = target.next();
    }

    else
    {
        sibbling = target.prev();
    }

    if (sibbling.is("li"))
    {
        sibbling.children("a").tab("show");
        $("[class='btn btn-large btn-block btn-success disabled']").removeClass("btn btn-large btn-block btn-success disabled");
        sibbling.children("a").addClass("btn btn-large btn-block btn-success disabled");
    }
});
</script>

【讨论】:

    【解决方案4】:

    这是你想要的。

    JS

    $('.continue').click(function(){
      $('.nav-tabs > .active').next('li').find('a').trigger('click');
    });
    $('.back').click(function(){
      $('.nav-tabs > .active').prev('li').find('a').trigger('click');
    });
    

    CSS

    .tabs-wrap {
        margin-top: 40px;
    }
    .tab-content .tab-pane {
        padding: 20px 0;
    }
    

    终于是 HTML

    <div class="container tabs-wrap">
      <ul class="nav nav-tabs" role="tablist">
        <li role="presentation" class="active">
          <a href="#billing" aria-controls="billing" role="tab" data-toggle="tab" aria-expanded="true">Billing Address</a>
        </li>
        <li>
          <a href="#shipping" aria-controls="shipping" role="tab" data-toggle="tab" aria-expanded="false">Delivery Address</a>
        </li>
        <li>
          <a href="#review" aria-controls="review" role="tab" data-toggle="tab" aria-expanded="false">Review &amp; Payment</a>
        </li>
      </ul>
    
    <div class="tab-content">
    
      <div role="tabpanel" class="tab-pane active" id="billing">
        <h3 class="">Billing Address</h3>
        <p>Billing Address Form</p>
        <a class="btn btn-primary continue">Continue</a>
      </div>
    
      <div role="tabpanel" class="tab-pane" id="shipping">
        <h3 class="">Shipping Address</h3>
        <p>Shipping Address Form</p>
        <a class="btn btn-primary back">Go Back</a>
        <a class="btn btn-primary continue">Continue</a>
      </div>
    
      <div role="tabpanel" class="tab-pane" id="review">
        <h3 class="">Review &amp; Place Order</h3>
        <p>Review &amp; Payment Tab</p>
        <a class="btn btn-primary back">Go Back</a>
        <a class="btn btn-primary continue">Place Order</a>
      </div>
    </div></div>
    
    
                <div id="push"></div>
    

    来自http://www.bootply.com/fGvD5eB3Ms

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多