Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
改进活动菜单和显示/隐藏div的JavaScript-jQuery代码_Javascript_Jquery_Html_Css - Fatal编程技术网

改进活动菜单和显示/隐藏div的JavaScript-jQuery代码

改进活动菜单和显示/隐藏div的JavaScript-jQuery代码,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我想知道如何改进这段代码? 我有3个导航菜单按钮。默认情况下,第一个是活动的。单击后,其他按钮被指定为活动类 <div class="mobile-nav"> <ul> <li><input class="mobile-nav-tab active" id="search-tab" type="button"/></li> <li><input class="mobile-nav

我想知道如何改进这段代码? 我有3个导航菜单按钮。默认情况下,第一个是活动的。单击后,其他按钮被指定为活动类

<div class="mobile-nav">
    <ul>
        <li><input class="mobile-nav-tab active" id="search-tab" type="button"/></li>
        <li><input class="mobile-nav-tab" id="menu-tab" type="button"/></li>
        <li><input class="mobile-nav-tab" id="members-tab" type="button"/></li>
    </ul>
</div>
我发现我能用三元运算符速记if-else部分。 但是我想知道有没有其他方法可以改进它并缩短它?

A)您应该开始将对象缓存到变量中,例如

var tabs = $('.mobile-nav-tab'),
    search = $('#search'),
    searchTab = $('#search-tab');
而不是一次又一次地跳进DOM

B) 这里有一个jQuery方法可以很好地工作。您可能需要稍微修改HTML以获得最佳结果,但这比单独选择每个选项卡容易得多。它可以看起来像这样:

selectedTab.slideDown().siblings().hide();
它向下滑动所需的选项卡,并隐藏DOM中同一级别上的所有其他选项卡


我希望这对您有所帮助,并将您带入新的方向。

我认为您可以将其清理到以下方面:

$('.mobile-nav-tab').click(function(){
        $('.mobile-nav-tab').removeClass('active');
        $(this).addClass('active');
        var $activeContent = $('#' + $(this).attr('id').replace('-tab',''));
         $('.mobile-nav-tab>div').not($activeContent).hide();
        $activeContent.slideDown();
});

这将大大缩短时间:

$(".mobile-nav-tab").click(function() {
    var parts = this.id.split("-");
    $(".mobile-nav-content").children().slideUp();

    $('.mobile-nav-tab').removeClass('active');
    $(this).addClass("active");
    $("#" + parts[0]).slideDown();
});

只需在各种标题上循环:

$(document).ready(function(){
    $('.mobile-nav-tab').click(function(){
        $('.mobile-nav-tab').removeClass('active');
        $(this).addClass('active');
        var a=["search","menu","members"]
        for (i in a){
         if ($('#'+a[i]+'-tab').hasClass('active')){
            $('#'+a[i]).slideDown();
         }
         else{
            $('#'+ a[i]).hide();
         }
        }
    });
}); 

或者,执行以下操作:

$(document).ready(function(){
    $('.mobile-nav-tab').click(function(){
        $('.mobile-nav-tab').removeClass('active');
        $(this).addClass('active');
        $('.mobile-nav-content div').hide() //Hide all content divs
        $('#'+this.id.split('-')[0]).slideDown() //SlideDown the current div only
    });
});

$('#+a[i]).hide()中缺少“字符”
谢谢您的回答,但这只设置了活动类,而不显示/隐藏div.:)
不带引号?:)我发烧了,不在办公室呆在家里。至少现在你的老板有了一个证据证明你真的病了:)谢谢你的回答,我会试试这个解决方案。
$(document).ready(function(){
    $('.mobile-nav-tab').click(function(){
        $('.mobile-nav-tab').removeClass('active');
        $(this).addClass('active');
        var a=["search","menu","members"]
        for (i in a){
         if ($('#'+a[i]+'-tab').hasClass('active')){
            $('#'+a[i]).slideDown();
         }
         else{
            $('#'+ a[i]).hide();
         }
        }
    });
}); 
$(document).ready(function(){
    $('.mobile-nav-tab').click(function(){
        $('.mobile-nav-tab').removeClass('active');
        $(this).addClass('active');
        $('.mobile-nav-content div').hide() //Hide all content divs
        $('#'+this.id.split('-')[0]).slideDown() //SlideDown the current div only
    });
});
$('.mobile-nav-tab').on("click", function () {
    clickedId = $(this).attr("id");
    $('.mobile-nav-tab').each(function (index) {
        if ($(this).attr("id") == clickedId) {
            $('.mobile-nav-tab,.content-item').eq(index).addClass('active');
            $(".content-item").eq(index).slideDown();
        } else {
            $('.mobile-nav-tab,.content-item').eq(index).removeClass('active');
            $(".content-item").eq(index).hide();
        }
    });
});