3

这应该相当简单,但不知何故不起作用。

我试图在引导选项卡事件的帮助下单击时更改列表组的活动类。

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
            $(e.target).addClass('active'); // activated tab
            $(e.relatedTarget).removeClass('active'); // previous tab
            //alert ($(e.relatedTarget).attr('href'));
        });

我可以向 e.target 添加类,但 e.relatedTarget 不起作用。有什么帮助吗?

<div class="list-group" id="MasterPageTabs">
     <a href="#lv" class="list-group-item active" data-toggle="tab">Language Variations</a>
     <a href="#hm" class="list-group-item" data-toggle="tab">Hotel Master</a>
     <a href="#gm" class="list-group-item" data-toggle="tab">Generics Master</a>
</div>

如您所见,我没有为标签使用默认的 ul li 结构,而是使用带有 js 的 bootstrap 3 列表组作为标签。

4

1 回答 1

1

更新,因为您的评论中的代码显示 (a) ul 用于选择元素。

您可以尝试扩展/覆盖选项卡插件的显示功能。就像是:

            <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
            <script src="bootstrap3/bootstrap-3.0.0-wip/dist/js/bootstrap.min.js"></script>

        <script>
          $.fn.tab.Constructor.prototype.show = function () {
            var $this    = this.element

            selector = $this.attr('href')
            selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7

            var previous = $('.list-group').find('.active:last')[0]
            var e        = $.Event('show.bs.tab', {
              relatedTarget: previous
            })

            $this.trigger(e)

            if (e.isDefaultPrevented()) return

            var $target = $(selector)


            this.activate($target, $target.parent(), function () {
              $this.trigger({
                type: 'shown.bs.tab'
              , relatedTarget: previous
              })
            })
          } 


        $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
                    $(e.target).addClass('active'); // activated tab
                    console.log(e.relatedTarget);
                    $(e.relatedTarget).removeClass('active'); // previous tab            
                });
        </script>

Event.relatedTarget 将始终是undefined因为它只为鼠标事件设置。它与您的结构甚至 Twitter Bootstrap 无关。

请参阅:https ://developer.mozilla.org/en-US/docs/Web/API/event.relatedTarget

于 2013-08-08T20:41:45.943 回答