这是什么情况

来源:6-9 jQuery遍历之add()方法

啊啊啊啊123

2016-08-02 16:32

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title></title>
    <style>
    .left {
        width: auto;
        height: 150px;
    }
    
    .left div {
        width: 150px;
        height: 120px;
        padding: 5px;
        margin: 5px;
        float: left;
        background: #bbffaa;
        border: 1px solid #ccc;
    }
    </style>
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>

<body>
    <h2>add方法()</h2>
    <div class="left first-div">
        <div class="div">
            <ul>
                <li>list item 1</li>
                <li>list item 2</li>
                <li>list item 3</li>
            </ul>
            <p>新的p元素</p>
        </div>
    </div>
    <div class="right"></div>
    <br/>
    <button>点击:add传递元素标签</button>
    <button>点击:add传递html结构</button>
    <script type="text/javascript">
    $("button:first").click(function() {
         //把p元素加到li合集中
         $('li').add('p').css('background', 'red')
    })
    </script>
    <script type="text/javascript">
    $("button:last").click(function() {
         //把html结构'<p>新的p元素</p>'
         //加入到li的合集中,为了能够在页面上显示
         //需要在重新appendTo要指定的节点处
         //值得注意:整个结构位置都改变了
         $('li').add('<p>新的p元素</p>').appendTo($('li:last'))
    })
    </script>
</body>

</html>

就改了这个 $('li').add('<p>新的p元素</p>').appendTo($('li:last'))  想把p插入最后一个li后面结果一点变成这样了,<li>list item 3</li>变成“list item 3”?如下图

http://img.mukewang.com/57a05a6c0001756504950583.jpg


写回答 关注

5回答

  • 慕妹7508549
    2016-10-26 19:20:31

    我明白了,$('li').add('<p>新的p元素1</p>')的意思是这样的,在$('li')这个集合里增加一个'<p>新的p元素1</p>'组成一个新的集合,如果后面没有appent系统会这么做,剪贴这个集合,再粘贴在原来的位置上可以参考$('li').add('p').css('background', 'red')

    如果后面有appent那么系统会这么做,剪贴这个集合(剪贴的内容不包括append括号里的东西)然后粘贴到append所指定的内容处,可以参考你的$('li').add('<p>新的p元素</p>').appendTo($('li:last'))

    也可以参考$('li').add('<p>新的p元素1</p>').appendTo($('.right'))原版,进行一下思考,

    看看我说的对不对,如果不对,请你教我,谢谢

  • 慕妹7508549
    2016-10-26 19:02:07

    其实你写的没有错,出现这个现像就对了,因为fload的特性,right这个是没有浮动的,left这一部分你看CSS样式里,是不是有fload,fload会使left这个div提升层级半级,也就是他的空间位置会飞(浮动)起来,但是他的内容就比空间位置差半级,如果空间的位置被别人用了,他就要排在那个人的后面。其实你的li还是li没有变化,只不过因为你把后面的插进来了,位置不够 了,就被挤上去了,但他还是li这是没有错的,

    慕妹7508...

    我说错了,问题不在这

    2016-10-26 19:08:22

    共 2 条回复 >

  • 铃铛3
    2016-08-10 13:02:49

    因为是将<li>集合添加到第三个<li>标签里,不是复制粘贴,所以只有item1和item2做了移动 item3没有变动。就形成了这个结构

    【1】【2】【3】=》【3【1】【2】】

    qq_与陌D...

    可以说得再详细点吗

    2017-07-20 13:01:05

    共 1 条回复 >

  • 慕前端9805640
    2016-08-02 20:24:50

    首先你得理解用这个方法会改变元素的排列

    li:last就是<li>list item3</li>

    appendTo是内部插入,将前面的$('li').add('<p>新的p元素</p>')插入到<li>list item3</li>内部就形成了这么个结构

    <li>

    list item3

    $('li').add('<p>新的p元素</p>')

    </li>





    qq_与陌D...

    那第二次点击呢

    2017-07-20 13:24:48

    共 1 条回复 >

  • LovelyDida
    2016-08-02 19:58:54

    因为appendTo(目标位置),而目标位置是li:last

jQuery基础(二)—DOM篇

jQuery第二阶段开启DOM修炼,了解创建、插入、删除与替换

114012 学习 · 590 问题

查看课程

相似问题