jquery的append()移动元素的问题

http://blog.csdn.net/fhd001/a...
像该篇文章说的,下面的代码应该链接1在原位置还存在才对,但是却是复制移动后原位置没有了,是因为jquery版本2.1.4版本的原因吗?求好心人解答

<body>
    <a href="#">链接1</a>
    <a href="#">链接2</a>
    <p>文字1</p>
    <p>文字2</p>
    <input type="button" name="move" id="move" value="移动" />
</body>
<script src='js/jquery-2.1.4.min.js'></script>
<script>
    $(function(){
        $('#move').on('click',function(){
        $("p").append($("a:eq(0)")); //添加目标为多个<p>
         //$("p:eq(1)").append($("a:eq(1)")); //添加目标是唯一的<p>
        });
    })
</script>
阅读 5.2k
5 个回答

这么理解:

  • 复制就是把$Aclone()下然后(添加)to()$B下(里)边;
  • 移动就是直接把$A给(添加)to()$B下(里)边。

所以按照这个逻辑,代码就是:

$(function(){
    $('#move').on('click',function(){
        $("a").eq(0).clone().appendTo('p'); //复制模式
        $("a").eq(1).appendTo('p'); //移动模式
    });
})

最后注意,能一句连下来的(链式写法)就别分段,能用多个函数分解的就别用大长字符串,这代码就漂(zhuang)亮(bi)了。

$("p").append($("a:eq(0)"));改成$("p").append($("a:eq(0)").clone()); 即可

复制:

$(function() {
    $('#move').on('click', function() {
        $("p").append($("a:eq(0)").clone());
    });
})

$("a:eq(0)")获取的是一个节点,append()方法传入节点的时候,会“剪切”原来的节点,如果不想移动原来的节点可以这么写:


    $(function(){
        $('#move').on('click',function(){
        $("p").append($("a:eq(0)").clone()); //添加目标为多个<p>
         //$("p:eq(1)").append($("a:eq(1)")); //添加目标是唯一的<p>
        });
    })

你可以这么理解,append方法会将元素从原来的位置上‘揪下来’,在放到新的位置

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题