JavaScript实例操作之左侧菜单

简介:

实现左侧菜单功能,有以下三种方法:

a、方法一

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title></title>

    <style>

        .hide{


            display: none;

        }

    </style>

</head>

<body>

    <div>

        <div>

            <div id="m1" onclick="change(1)">菜单一</div>

            <div>

                <div>1</div>

                <div>2</div>

                <div>3</div>

                <div>4</div>

            </div>

        </div>

        <div>

            <div id="m2" onclick="change(2)">菜单二</div>

            <div class="hide">

                <div>1</div>

                <div>2</div>

                <div>3</div>

                <div>4</div>

            </div>

        </div>

        <div>

            <div id="m3" onclick="change(3)">菜单三</div>

            <div class="hide">

                <div>1</div>

                <div>2</div>

                <div>3</div>

                <div>4</div>

            </div>

        </div>

    </div>

<script src="jquery-3.1.0.min.js" type="text/javascript"></script>

<script type="text/javascript">

    function change(arg){

        if(arg == 1){

            var menu=$('#m1')

        }else if(arg == 2){

            var menu = $('#m2')

        }else{

            var menu = $('#m3')

        }

        console.log(menu.text());


    }

</script>

</body>

</html>

运行结果:

wKioL1fHoIfSp4ipAAC101QRKhg896.png

解析:鼠标点击菜单一时,arg == 1,通过$('#m1')获取对应标签然后赋值给menu;获取两个标签之间的内容可以用menu.text()来操作.


b、方法二

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title></title>

    <style>

        .hide{


            display: none;

        }

    </style>

</head>

<body>

    <div>

        <div>

            <div onclick="change(this)">菜单一</div>

            <div>

                <div>1</div>

                <div>2</div>

                <div>3</div>

                <div>4</div>

            </div>

        </div>

        <div>

            <div  onclick="change(this)">菜单二</div>

            <div class="hide">

                <div>1</div>

                <div>2</div>

                <div>3</div>

                <div>4</div>

            </div>

        </div>

        <div>

            <div onclick="change(this)">菜单三</div>

            <div class="hide">

                <div>1</div>

                <div>2</div>

                <div>3</div>

                <div>4</div>

            </div>

        </div>

    </div>

<script src="jquery-3.1.0.min.js" type="text/javascript"></script>

<script type="text/javascript">

     function change(arg){


         var t = $(arg).text();

         console.log(t);

     }


</script>

</body>

</html>

显示结果:

wKioL1fHptDixmWQAACm3Eh-ZoY327.png

解析:当点击菜单一,那么change(this)传递过来的$(arg)就是菜单一;同样如果是菜单二,则$(arg)传过来的是菜单二,依次类推,换句话说changge(this)中的this表示的就是点击的当前标签,但是通过change(this)传递到函数change(arg)中,然后用$(arg)就变成了jQuery的选择器,所以就可以把$(arg).text()交给jQuery进行分析,另外如果我们有多个菜单,这样写相对方法一要省去很多if判断的步骤。

c、方法三

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title></title>

    <style>

        .hide{


            display: none;

        }

    </style>

</head>

<body>

    <div>

        <div>

            <div onclick="change(this)">菜单一</div>

            <div class ="content hide">

                <div>1</div>

                <div>2</div>

                <div>3</div>

                <div>4</div>

            </div>

        </div>

        <div>

            <div  onclick="change(this)">菜单二</div>

            <div class="content hide">

                <div>1</div>

                <div>2</div>

                <div>3</div>

                <div>4</div>

            </div>

        </div>

        <div>

            <div onclick="change(this)">菜单三</div>

            <div class="content hide">

                <div>1</div>

                <div>2</div>

                <div>3</div>

                <div>4</div>

            </div>

        </div>

    </div>

<script src="jquery-3.1.0.min.js" type="text/javascript"></script>

<script type="text/javascript">

     function change(arg){

         $(arg).next().removeClass('hide');

         $(arg).parent().siblings().find('.content').addClass('hide');

     }


</script>

</body>

</html>

演示结果:

wKioL1fHrz7z2OETAABRlSiRRog755.png

解析:

$(arg)表示当前点击的标签

①找到下一个标签,移除hide

$(arg).next()下一个标签

removeClass('')删除标签中的某个属性

addClass('')当前标签中添加一个属性

$(arg).next().removeClass('hide') 在下一个标签中移除样式"hide"

②、找到其他标签,隐藏其内容,即添加一个hide

$(arg).parent()当前标签的父标签

$(arg).parent().siblings() 所有父标签的兄弟标签

$(arg).parent().siblings().find('.content').addClass('hide') 在所有父标签的兄弟标签中找到含有"content"的标签并且添加一个"hide"样式








      本文转自027ryan  51CTO博客,原文链接:http://blog.51cto.com/ucode/1845141,如需转载请自行联系原作者



相关文章
|
10天前
|
缓存 JavaScript 前端开发
【JavaScript 技术专栏】DOM 操作全攻略:从基础到进阶
【4月更文挑战第30天】本文深入讲解JavaScript与DOM交互,涵盖DOM基础、获取/修改元素、创建/删除元素、事件处理结合及性能优化。通过学习,开发者能掌握动态改变网页内容、结构和样式的技能,实现更丰富的交互体验。文中还讨论了DOM操作在实际案例、与其他前端技术结合的应用,助你提升前端开发能力。
|
4天前
|
JavaScript 前端开发
javascript操作BOM的方法
javascript操作BOM的方法
12 0
|
1天前
|
Web App开发 JavaScript 前端开发
javascript操作DIV总结 转
javascript操作DIV总结 转
|
4天前
|
JavaScript 前端开发 安全
javascript操作DOM的方法
javascript操作DOM的方法
10 0
|
4天前
|
JavaScript 前端开发 容器
js操作dom元素
js操作dom元素
12 0
|
4天前
|
JavaScript 前端开发 索引
js操作字符串的方法
js操作字符串的方法
13 2
|
11天前
|
存储 缓存 JavaScript
【Web 前端】JS哪些操作会造成内存泄露?
【4月更文挑战第22天】【Web 前端】JS哪些操作会造成内存泄露?
|
14天前
|
JavaScript 前端开发
js操作字符串的相关方法
js操作字符串的相关方法
12 3
|
14天前
|
JavaScript 前端开发
js 操作数组的方法
js 操作数组的方法
22 4
|
15天前
|
JavaScript
js_操作dom(委托和冒泡事件)
js_操作dom(委托和冒泡事件)
16 0