使用Twitter Bootstrap创建按钮以触发导航标签页

12

这个按钮会触发加载下一个标签页的内容,但是标签本身不会切换,它仍然停留在第一个标签页。

<br><a class="btn btn-primary" href="#tab2" data-toggle="tab">Review</a><br>

这里是用于导航选项卡的代码:

  <ul class="nav nav-tabs">
    <li class="active"><a href="#tab1" data-toggle="tab">Shipping</a></li>
    <li><a href="#tab2" data-toggle="tab">Quantities</a></li>
    <li><a href="#tab3" data-toggle="tab">Summary</a></li>
  </ul>

欢迎提供任何解决方法,用于切换选项卡和内容

也许有一种方法可以改变按钮以触发 * bootstrap-tab.js v2.3.1 中的 next() 函数:

  , activate: function ( element, container, callback) {
      var $active = container.find('> .active')
        , transition = callback
            && $.support.transition
            && $active.hasClass('fade')

      function next() {
        $active
          .removeClass('active')
          .find('> .dropdown-menu > .active')
          .removeClass('active')

        element.addClass('active')

        if (transition) {
          element[0].offsetWidth // reflow for transition
          element.addClass('in')
        } else {
          element.removeClass('fade')
        }

        if ( element.parent('.dropdown-menu') ) {
          element.closest('li.dropdown').addClass('active')
        }

        callback && callback()
      }

      transition ?
        $active.one($.support.transition.end, next) :
        next()

      $active.removeClass('in')
    }
  }
5个回答

34

您可以使用 jQuery 给 Review 按钮分配一个点击事件处理程序...

JS:

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

HTML:

<a class="btn btn-primary" href="#" id="btnReview">Review</a>

演示


1
这不是一个优雅的标记解决方案。明显需要在Bootstrap中进行修复。 - Alex

10

通过将触发链接的 'data-toggle' 更改为 'data-trigger',以下代码可以触发具有相同 HREF 属性的任何选项卡,在所有具有类似标记的触发器中。

(注意:选择器没有进行优化,这只是指向更灵活解决方案的指南)

JS:

$( '[data-trigger="tab"]' ).click( function( e ) {
    var href = $( this ).attr( 'href' );
    e.preventDefault();
    $( '[data-toggle="tab"][href="' + href + '"]' ).trigger( 'click' );
} );

HTML:

<a class="btn btn-primary" href="#tab2" data-trigger="tab">Review</a>

1
使用Bootstrap 4。
var nextTab;    
    $('.nav-link').map(function(element) {
                    if($(this).hasClass("active")) {
                        nextTab = $(this).parent().next('li');
                    }
                })

    nextTab.find('a').trigger('click');

1

使用Bootstrap 4和JQuery非常简单,我正在使用以下解决方案:

 $(document).ready(function(){
        activaTab('aaa');
    });

    function activaTab(tab){
        $('.tab-pane a[href="#' + tab + '"]').tab('show');
    };

.tab('show'); 做到了魔法。谢谢! - Ifeanyi Amadi
.tab('show'); 做了魔法。谢谢,伙计! - Ifeanyi Amadi

0

你可以使用 jQuery 来实现;

JS:

function change_tab(tab_id){

   $(".nav-link").attr("class","nav-link");//clear classes
   $(".tab-pane").attr("class","tab-pane fade");//clear classes

   var tab_content = "#"+tab_id;
   var tab = "#"+tab_id+"-tab";
   $(tab).attr("class","nav-link active show");
   $(tab_content).attr("class"," tab-pane fade active show");
}

HTML:

<a class="btn btn-primary" onclick="change_tab('tabid')">Review</a>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接