Turbolinks和Bootstrap Tab激活

时间:2016-03-26 14:21:21

标签: javascript twitter-bootstrap turbolinks ruby-on-rails-5

在Rails的Turbolinks的附加环境下,我基本上面临与described here相同的问题。

我正在使用这段代码

$(document).on('ready page:change', function() {
    /* Show tab from anchor */
    var hash = window.location.hash;
    hash && $('ul.nav a[href="' + hash + '"]').tab('show');

    /* Update URL anchor after selecting tab */
    $('.nav-tabs a').click(function (e) {
        $(this).tab('show');
        var scrollmem = $('body').scrollTop();
        window.location.hash = this.hash;
        $('html,body').scrollTop(scrollmem);
    });

哪个适用于手动页面重新加载(F5)和缓存还原,但是在从Turbolinks重新加载页面后没有单击*。

* 当点击turbolinks链接时,如果页面有一些缓存,那么首先恢复该缓存并显示好选项卡,但是仍然是对服务器的请求以获取最后的内容,一旦该请求到达并被解析,标签“切换回”原始

我的引导代码如下所示

<ul class="nav nav-tabs" role="tablist">
    <li class="nav-item">
    <a class="nav-link active" data-toggle="tab" href="#student" role="tab"></a>
    </li>
    <li class="nav-item">
    <a class="nav-link" data-toggle="tab" href="#mentor" role="tab"><%= </a>
    </li>
    <li class="nav-item">
    <a class="nav-link" data-toggle="tab" href="#company" role="tab"></a>
    </li>
</ul>

<!-- Tab panes -->
<div class="tab-content">
    <br />
    <div class="tab-pane fade in active" id="student" role="tabpanel">
        ...
    </div>
    <div class="tab-pane fade" id="mentor" role="tabpanel">
        ...
    </div>
    <div class="tab-pane fade" id="company" role="tabpanel">
        ...
    </div>
</div>

1 个答案:

答案 0 :(得分:2)

Rails 5附带Turbolinks 5.解决方案只是更改事件监听器的名称

$(document).on('ready turbolinks:load', function() {