美文网首页
JQuery-链式练习中遇到的问题

JQuery-链式练习中遇到的问题

作者: Alex_717 | 来源:发表于2017-11-08 08:59 被阅读0次
代码
<!DOCTYPE html>
<html>
<head>
    <style type="text/css">
        #menu{
            width: 300px;
        }
        div a{
            float: left;
            display: none;
            width: 300px;
            background-color: #888;
        }
        .has_children{
            background-color: #555;
            color: #fff;
            cursor: pointer;
        }
        .highlight{
            background-color: green;
        }
    </style>
    <title>链式写法</title>
</head>
<body>
    <div id="menu">
        <div class="has_children">
            <span>第1章</span>
            <a href="#">1.1</a>
            <a href="#">1.2</a>
            <a href="#">1.3</a>
            <a href="#">1.4</a>
            <a href="#">1.5</a>
        </div>
        <div class="has_children">
            <span>第2章</span>
            <a href="#">2.1</a>
            <a href="#">2.2</a>
            <a href="#">2.3</a>
            <a href="#">2.4</a>
            <a href="#">2.5</a>
        </div>
        <div class="has_children">
            <span>第3章</span>
            <a href="#">3.1</a>
            <a href="#">3.2</a>
            <a href="#">3.3</a>
            <a href="#">3.4</a>
            <a href="#">3.5</a>
        </div>
    </div>
</body>
<script src="../scripts/jquery-3.2.1.js"></script>
<script type="text/javascript">
    
    $(".has_children").on('click', function(){
        $(this).addClass('highlight')         
               .children('a').show()
               .end()
               .siblings().removeClass("highlight")
               .children('a').hide(); 
    });
</script>
</html>

在这次练习中,遇到了两个问题:
1、为什么当点击div.has_children时,添加了highlight样式,但只有<span>标签的背景色变为了绿色。下面展开的a标签的内容的背景色并没有变为绿色。a标签中的内容也是div.has_children中的内容。
2、在调用了siblings()方法后,下面的.children('a').hide(); 作用于this还是this的兄弟元素。

第一个问题:因为a标签设置了float样式,此时已经脱离了文档流,而div.has_children并没有设置高度,因此div中包裹着的是span标签。如果要在视觉上div.has_children包裹a标签。可以动态地给div.has_children添加高度。但是此时的a标签其实还是脱离了文档流了的。
第二个问题:在调用siblings后,后面的.children('a').hide();虽然还跟在$(this)后面,但是收到siblings()的影响。.children('a').hide();此时是作用于this对象的兄弟元素。

其中这里面还有另一个知识点。
点击了div.has_children后,a标签一个一个往下排列。而没有一个一个挨着左边排列。这是因为a标签设置了float样式,然后就可以设置宽度,此时设置的宽度和父元素div.menu的宽度是一样的。所以就会外下排列。

上述纯属个人理解,如有不正确的地方,请指正。

相关文章

  • JQuery-链式练习中遇到的问题

    代码 在这次练习中,遇到了两个问题:1、为什么当点击div.has_children时,添加了highlight样...

  • jquery设计思想书目录

    jQuery-选择网页元素 jQuery-改变结果集 jQuery-链式操作 jQuery-元素的操作:取值和赋值...

  • 练习中遇到的问题

    今天的直播,真得太让自己失望了,讲了这么久了还是磕磕绊绊的。什么时候才能看两遍才能讲的出来。自己的口脑协调能力比较...

  • Javascript即将到来的3个新特性

    1、Optional Chaining(可选链式调用) 这是我们现在 ES6 中会遇到的问题,原因是 user 中...

  • JQuery-链式编程(评论打分栗子)

    获取到某个元素后,在后面.方法.方法.方法…在jQuery中,如果有一个对象调用了一个方法,而且这个方法是设置某个...

  • 01-链式结构

    在前文提到的线性结构中,存在中间插入数据不方便的现象,因此为了解决这个问题,提出了链式结构。链式结构分为单链式结构...

  • iOS链式编程

    前言 通过对Masonry的学习,我们了解了链式编程的思想。此片文章是使用链式编程的思想做一个计算机,练习一下链式...

  • 使用pureLayout布局那些事

    1.masonry这个布局是比较知名的,使用block的链式编程来布局确实酷炫,但是实际使用过程中确实遇到不少问题...

  • 爬虫练习中遇到中文乱码的问题(记录)

    代码如下 打开test2.txt,发现中文乱码 我们在res后面加一行代码看下返回内容的编码方式 输出: 第一种解...

  • jQuery UI

    先引入jQuery- ui / jQuer - min 绑定 +draggable 自动设...

网友评论

      本文标题:JQuery-链式练习中遇到的问题

      本文链接:https://www.haomeiwen.com/subject/ddnsmxtx.html