简体   繁体   English

在单击Bootstrap选项卡之前,Jquery无法隐藏和显示div

[英]Jquery not working to hide and show div until Bootstrap tab clicked

I have 2 different divs that need to appear depending on which tab is active. 我需要显示2个不同的div,具体取决于哪个选项卡处于活动状态。

If tab "#myTab class overview" is active then the "rental div" should show. 如果选项卡“#myTab类概述”处于活动状态,则应显示“rental div”。 If "#myTab class overview" is not active them the "homeo div" should show. 如果“#myTab类概述”未激活,则应显示“homeo div”。

My function does not work on page load, on page load both divs appear. 我的功能在页面加载时不起作用,在页面加载时,两个div都会出现。 If i click either tab then only does my function work. 如果我单击任一选项卡,那么只有我的功能工作。

Do you know how to get my function to be working on page load. 你知道如何使我的功能在页面加载上工作。

 jQuery(document).ready(function () { jQuery('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { if ($("#myTab")[0].className=='overview active') jQuery('#rental').show(), jQuery('#homeo').hide(); else jQuery('#rental').hide(), jQuery('#homeo').show(); }); }) 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="rental"> <a href="" target="_blank" class="btn btn-info btn-lg blue" role="button">DOWNLOAD APPLICATION</a> </div> <div id="homeo"> <a href="" target="_blank" class="btn btn-info btn-lg blue" role="button">Test</a> </div> <ul class="nav nav-pills"> <li id="myTab" class="overview active"><a data-toggle="tab" href="#home">RENTAL</a></li> <li><a data-toggle="tab" href="#homeowner">HOMEOWNER</a></li> </ul> 

Why not use CSS or style attribute to hide the element on pageload. 为什么不使用CSS或style属性来隐藏pageload上的元素。 Suppose you want to only show rental at page load 假设您只想在页面加载时显示租借

<div id="homeo" style="display:none;">
<a href="" target="_blank" class="btn btn-info btn-lg blue" role="button">Test</a>
</div>

Or with CSS 或者使用CSS

#homeo {
    display: none;
}

.className is native javascript. .className是原生javascript。 jQuery objects don't have this property. jQuery对象没有此属性。

You want to use $("#myTab")[0].hasClass('overview') 你想使用$("#myTab")[0].hasClass('overview')

jQuery hasClass documentation jQuery hasClass文档

You need to call your hide/show code on page load alongwith tab click as 您需要在页面加载时调用隐藏/显示代码以及选项卡单击为

jQuery(document).ready(function () {
            if($('#myTab').hasClass('overview active'))
            {
                jQuery('#rental').show(), jQuery('#homeo').hide();
            }else
            {
                jQuery('#rental').hide(), jQuery('#homeo').show();
            }
            jQuery('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
                if ($("#myTab")[0].className=='overview active')
                    jQuery('#rental').show(), jQuery('#homeo').hide(); 
                else
                    jQuery('#rental').hide(), jQuery('#homeo').show();

            });
        })  

Here is with demo 这是演示

https://jsfiddle.net/jalayoza/cnsLfbza/ https://jsfiddle.net/jalayoza/cnsLfbza/

jQuery(document).ready(function () {
            if($('#myTab').hasClass('overview active'))
            {
                jQuery('#rental').show(), jQuery('#homeo').hide();
            }else
            {
                jQuery('#rental').hide(), jQuery('#homeo').show();
            }
            jQuery('a[data-toggle="tab"]').on('click', function (e) {
                if ($("#myTab")[0].className=='overview active')
                    jQuery('#rental').show(), jQuery('#homeo').hide(); 
                else
                    jQuery('#rental').hide(), jQuery('#homeo').show();

            });
        }) 



<div id="rental">
<a href="" target="_blank" class="btn btn-info btn-lg blue" role="button">DOWNLOAD APPLICATION</a>
</div>


<div id="homeo">
<a href="" target="_blank" class="btn btn-info btn-lg blue" role="button">Test</a>
</div>



  <ul class="nav nav-pills">
    <li id="myTab" class="overview active"><a data-toggle="tab" href="#home">RENTAL</a></li>
    <li><a data-toggle="tab" href="#homeowner">HOMEOWNER</a></li>
  </ul>

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

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