Turbolinks 和 Bootstrap 选项卡激活
Turbolinks and Bootstrap Tab activation
在 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 link 时,如果页面有一些缓存,则首先恢复该缓存并显示好的选项卡,但是然后仍然向服务器请求获取最后的内容,一旦该请求到达并被解析,选项卡 "switches back" 到原始的
我的 bootstrap 代码如下所示
<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>
Rails 5 随 Turbolinks 5 一起提供。解决方案只是更改事件侦听器的名称
$(document).on('ready turbolinks:load', function() {
在 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 link 时,如果页面有一些缓存,则首先恢复该缓存并显示好的选项卡,但是然后仍然向服务器请求获取最后的内容,一旦该请求到达并被解析,选项卡 "switches back" 到原始的
我的 bootstrap 代码如下所示
<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>
Rails 5 随 Turbolinks 5 一起提供。解决方案只是更改事件侦听器的名称
$(document).on('ready turbolinks:load', function() {