.replaceWith和.replaceAll返回值是不是不一样啊?

来源:5-2 DOM替换replaceWith()和replaceAll()

素水凌心

2016-07-22 15:56

<script type="text/javascript">

    $(".bt1").on('click', function() {
        //找到内容为第二段的p元素
        //通过replaceWith删除并替换这个节点
        $(".right > div:first p:eq(1)").replaceWith('<a>replaceWith替换第二段的内容</a><br />').appendTo($("body"));
    })
    </script>
    <script type="text/javascript">
    //找到内容为第六段的p元素
    //通过replaceAll删除并替换这个节点
    $(".bt2").on('click', function() {
        ($('<a style="color:red">replaceAll替换第六段的内容</a><br />').replaceAll('.right > div:last p:last')).appendTo($("body"));
    })
    </script>

我发现 .replaceWith返回的是替换前的节点,也就是原来的节点,.replaceAll返回的是替换后的节点,就是用来替换的节点。上面的代码点击bt1,原来的节点会被移动到最后,点击bt2,替换后的节点会显示在最后,原来节点所在的位置被删除了。

写回答 关注

4回答

  • 柚柚柚子咯
    2016-09-06 15:33:19

    这两个返回值确实是不一样

        var result=$(".right > div:first p:eq(1)").replaceWith('<a>replaceWith替换第二段的内容</a>')
        alert(result.get(0).tagName)//返回 p
    var result=$('<a>replaceAll替换第六段的内容</a>').replaceAll('.right > div:last p:last');
        alert(result.get(0).tagName)//返回 a


  • qq_程式_03881411
    2016-08-26 16:26:29

    返回的都是要被删除的节点的吧!

  • sleepywolf
    2016-07-22 17:43:38

    返回都是被删除的节点

    素水凌心

    这是一个网站的解释: 返回值 replaceAll()函数的返回值为jQuery类型,返回表示替换内容的jQuery对象。 与被替换掉的节点关联的所有数据和事件处理器也将同时被移除。 请注意replaceAll()和replaceWith()函数之间的区别: var $A = $("s1"); var $B = $("s2"); // 将$B替换成$A $A.replaceAll( $B ); // 返回表示替换内容的jQuery对象( 匹配替换掉$B的所有$A元素 ) // 将$A替换成$B $A.replaceWith( $B ); // 返回$A

    2016-07-29 11:19:03

    共 1 条回复 >

  • GC極3165854
    2016-07-22 17:08:32

    我不太明白你说什么,但你要注意(".right > div:first p:eq(1)")里面的p:eq(1)的意思,同理也要注意p:last。

    素水凌心

    我是说 ($('<a style="color:red">replaceAll替换第六段的内容</a><br />').replaceAll('.right > div:last p:last')) 这个东西返回的结果不是替换前的 <p>第五段</p> ,而是替换后的 <a style="color:red">replaceAll替换第六段的内容</a><br />

    2016-07-22 17:28:21

    共 1 条回复 >

jQuery基础(二)—DOM篇

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

114012 学习 · 590 问题

查看课程

相似问题