2016-02-13 48 views
2

我正在使用Bootstrap 3.3.5版,並使用兩個選項卡在兩個內容窗格之間切換。我設置了一個監聽程序,用於切換到「註釋」窗格的選項卡。它第一次發射。但是如果我在另一次(或多次)之間來回切換標籤,事件不會再次發生。顯示Bootstrap選項卡事件僅第一次觸發,而不是第二次或更高版本選項卡開關

$('#commentsTab').on('shown.bs.tab', function (e) { 
    console.log("do stuff here"); 
}); 

和這裏的HTML標籤:

<ul class="nav nav-pills side-tabs" role="tablist"> 
    <li class="side-tab hidden-md hidden-lg" ng-class="oneColumn ? 'active' : ''" role="presentation"> 
     <a href="" data-target="#topcard" data-toggle="tab" role="tab">{{title}}</a> 
    </li> 
    <li class="side-tab" ng-class="oneColumn ? '' : 'active'" role="presentation"> 
     <a href="" data-target="#notes" data-toggle="tab" role="tab"><i class="fa fa-clone"></i>Notes</a> 
    </li> 
    <li role="presentation" class="side-tab"> 
     <a id="commentsTab" class="comments-tab" href="" data-target="#comments" data-toggle="tab" role="tab"><i class="fa fa-comment-o"></i>Feedback</a> 
    </li> 
</ul> 

任何人知道如何使這項工作,讓我每天可靠的選項卡切換到時間把事件?

回答

1

多一點調查後,我想通了這個問題 - 發佈的情況下,它可以幫助任何人......

我也註冊了相同的選項卡中顯示事件接頭元件上的角度指令。我忘記了它在第一次之後未註冊(取消綁定())事件。

顯然,這條線是從所有已註冊的函數中解除顯示事件的綁定,而不僅僅是它本身。

elem.unbind('shown'); 

所以不是我重組它使用命名功能,(在此answer等)拆散只是功能:

 var unbind = function (elem) { 
      elem.unbind('shown', scope.scrollFn); 
     }; 

     scope.scrollFn = function (elem) { 
      //do stuff here 
      unbind(elem); 
     }; 

     elem.on('shown.bs.tab', scope.scrollFn); 

現在解除綁定並不影響我對顯示註冊的其他功能事件在原來的職位。

相關問題