我有一系列选项卡。据我所知,所有的标签加载一次页面加载。我有一个选项卡,但是我想成为这个例外。它包含一个我正在加载的小部件,一旦使用点击特定的选项卡,我只想加载它。仅在单击选项卡时从选项卡加载代码
<div class="tabbable tabbable-custom">
<ul class="nav nav-tabs">
<li class="active">
<a id="nav-tabs-2" data-toggle="tab" href="#info">Details</a>
</li>
<li>
<a data-toggle="tab" href="#live">Live View</a>
</li>
<li>
<a data-toggle="tab" href="#local">Local Storage</a>
</li>
</ul>
</div>
,然后这是我的标签
<div id="local" class="tab-pane">
<div evercam="localstorage"></div>
<script type="text/javascript" src="https://s3.amazonaws.com/cdn.evercam.io/js/localstorage/0.0.1/hikvision.local.storage.mini.js"></script>
<script type="text/javascript">
$('a[data-toggle="tab"]').on('click','show.bs.tab', function() {
if ($(this).attr('href') == '#local' && !LocalStorage.isLoaded()) {
// Set Evercam Camera ID
LocalStorage.options.cameraId = '<%= @camera['id'] %>';
// OR //
// Using api_id and api_key
LocalStorage.options.api_id = '<%= current_user.api_id -%>';
LocalStorage.options.api_key = '<%= current_user.api_key -%>';
// Finally Load the widget
LocalStorage.Load();
}
})
</script>
</div><!--TAB PANE -->
这将加载插件,当用户点击标签。我遇到的问题是,如果用户离开选项卡然后返回到它 - 它会重新加载小部件,并且我有两个小部件实例!有没有办法让它只加载一次?
您的绑定事件是错误的。 '$(selector).on('click','show.bs.tab',function(){//让我们在这里做很棒的事情});' – Kai 2014-10-07 14:26:09
嗨,谢谢Jh Kaiz,我已经更新了上面的代码。我尝试过在if和if之间使用和不使用if($(e.target).attr('href')=='#local'){//}',但都没有工作。你能看到我有什么错吗?你可以提供你的HTML代码吗? – 2014-10-07 14:55:36
?只是' '只有,我需要为你提供JS解决方案伙计:)。在这种情况下,我认为你所期望的是'if($(this).attr('href')=='#local'){//做你想做的事情;}' –
Kai
2014-10-07 14:57:30