繁体   English   中英

Bootstrap nav-tabs使用jQuery检查选定的选项卡

[英]Bootstrap nav-tabs check for selected tab using jquery

我有以下Bootstrap导航标签:

 <div class="row spiff_tabs_body">
            <!-- Nav tabs -->
            <ul class="nav nav-tabs spiff_tabs" role="tablist">
                <li role="presentation" class="active">
                    <a href="#home" aria-controls="home" role="tab" data-toggle="tab" onclick="FormGet('dashboard/delayedspiff', 'delayedspiff')">Potential Spiff</a>
                </li>
                <li role="presentation">
                    <a href="#profile" aria-controls="profile" role="tab" data-toggle="tab" onclick="FormGet('dashboard/instantspiff', 'delayedspiff')">Instant Spiff</a>
                </li>
            </ul>
            <!-- Tab panes -->
            <div class="tab-content">
                <div role="tabpanel" class="tab-pane active" id="delayedspiff"></div>
                <div role="tabpanel" class="tab-pane" id="instantspiff"></div>
            </div>
        </div>
    </div>
</div>

我需要能够检查选中了哪个选项卡,然后显示警报。 我认为以下javascript:

<script>
$(function () {
    FormGet('dashboard/delayedspiff', 'delayedspiff');        
});
</script>

<script>
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
    // here is the new selected tab id
    var selectedTabId = e.target.id;
    var id = $('.tab-content .active').attr('id');
    if (id == "delayedspiff") {
        alert("delayedspiff");
    } else {
        alert("instantspiff");
    }
});   
</script>

当我单击选项卡时,它可以工作,但警报始终显示延迟扩散。 当他们单击“ instantspiff”选项卡时,我需要解散instantspiff。 谁能看到我在做什么错?

您只需要从所有选项卡中删除active类别,然后将其添加到单击的选项卡中即可。

编辑:为了获得单击的选项卡的ID,请尝试在选项卡选择中使用属性data-id。

  <li role="presentation" class="active">
                    <a href="#home" aria-controls="home" role="tab" data-id="delayedspiff" data-toggle="tab" onclick="FormGet('dashboard/delayedspiff', 'delayedspiff')">Potential Spiff</a>
                </li>
                <li role="presentation">
                    <a href="#profile" aria-controls="profile" data-id="instantspiff" role="tab" data-toggle="tab" onclick="FormGet('dashboard/instantspiff', 'delayedspiff')">Instant Spiff</a>
                </li>

<script>
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
    var wrongid = $('.tab-content .active').attr('id');
    $('a[data-toggle="tab"]').removeClass("active"); // remove class active from all tabs
    $(this).addClass("active"); // add class active to the current tab
    var correctid = $(this).data("id"); // get the attribute data-id of the clicked tab
    alert($('.tab-content .active')[0].outerHTML); // shows why you are getting the incorrect id
    if (correctid == "delayedspiff") 
      alert("delayedspiff");
    else 
      alert("instantspiff");    
});   
</script>

更新的小提琴: https : //jsfiddle.net/DTcHh/14313/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM