javascript - jquery列表隐藏显示怎么进行遍历?
大家讲道理
大家讲道理 2017-04-11 13:14:10
[JavaScript讨论组]

这个问题是,点击i标签的图标时,li列表里面有两个class=“nav-menu”同时隐藏显示,这个问题很头疼。这个jquery怎么能进行遍历并能够单独隐藏显示一个指定class?

$('.postion-right i').on('click', function(){
    var el = $(this);
    if(el.hasClass('fa-minus-square-o')){
        el.removeClass('fa-minus-square-o').addClass('fa-plus-square-o');
        $(".nav-menu").each(function () {
            $(this).hide("100");
        })
    }else{
        el.removeClass('fa-plus-square-o').addClass('fa-minus-square-o');
        $(".nav-menu").each(function () {
            $(this).show("100");
        })
    }
});
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
怪我咯

姑且猜测你是想点击.postion-right i之后让当前.postion-right i下面的ul.nav-menu 显示隐藏。。那么你需要把

        $(".nav-menu").each(function () {
            $(this).show("100");
        })

替换为

$el.closest('li').find('ul').show();

从.postion-right i找到上级的li再找到下级ul。。。。

另外从性能方面考虑,jq的选择器要遵循id>tag>name>class>attribute来使用

再另外,使用$(".nav-menu").each(fn(index))的时候一般是根据这组元素的index(标识)来处理某一项内容。。。否则$(".nav-menu").show(),这样jq就可以帮你处理全部元素了

迷茫

each方法会改变this的指向,所以不能这样用.使用siblings来获取同辈元素就可以很方便的进行控制了。

    $('.postion-right i').on('click', function(){
        var el = $(this);
        if (el.hasClass('fa-minus-square-o')) {
            el.removeClass('fa-minus-square-o').addClass('fa-plus-square-o');
             $(this).parent().siblings(".nav-menu").hide("100");
        } else {
            el.removeClass('fa-plus-square-o').addClass('fa-minus-square-o');
             $(this).parent().siblings(".nav-menu").show("100");
        }
    });
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号