Twitter Bootstrap选项卡显示事件未在页面加载时触发

six*_*der 14 javascript events tabs coffeescript twitter-bootstrap

在我有n个选项卡的页面中,以及以下脚本(coffeescript,我检查了已编译的javascript,它似乎没问题)...

$ ->
    init()

init = ->
    $('a[data-toggle="tab"]').on 'shown', (event) ->
        shown = event.target
        console.log("Showing tab: " + shown)
Run Code Online (Sandbox Code Playgroud)

现在,"显示"事件不会在页面加载时触发,因此对于页面上显示的第一个选项卡,无法处理此问题(即:通过xhr加载内容)

我尝试将其添加到上面的脚本中,看看是否可以手动触发它:

$('a[data-toggle="tab"]:first').tab 'show'
Run Code Online (Sandbox Code Playgroud)

......但事实并非如此.

这是我在视图中使用的HTML代码

<div class="tabbable">
<ul class="nav nav-tabs">
    <li class="active">
        <a href="#updates" data-toggle="tab"><%=t :updates, :scope => 'user.profile.sections'%></a>
    </li>
    <li class="">
        <a href="#activity" data-toggle="tab"><%=t :activity, :scope => 'user.profile.sections'%></a>
    </li>
    <li class="">
        <a href="#articles" data-toggle="tab"><%=t :articles, :scope => 'user.profile.sections'%></a>
    </li>
</ul>

<div class="tab-content">
    <div class="tab-pane active" id="updates">

    </div>
    <div class="tab-pane" id="activity">

    </div>

    <div class="tab-pane" id="articles">

    </div>

</div>
</div>
Run Code Online (Sandbox Code Playgroud)

任何线索?

mer*_*erv 28

尝试将该课程active与选项卡<li>和内容分开<div>.如果请求的选项卡已经激活,则该show()方法中的第一行代码之一是短路.

的jsfiddle


小智 12

当您告诉页面显示选项卡时,您可以手动触发事件:

$('a[data-toggle="tab"]:first').trigger("shown.bs.tab");
Run Code Online (Sandbox Code Playgroud)

  • $('a [data-toggle ="tab"]:first').tab('show')也许是一个更好的主意. (2认同)