javascript - 循环append方法
天蓬老师
天蓬老师 2017-04-11 09:03:10
[JavaScript讨论组]

我想循环往p中添加dom

<p class="svg-container"></p>
<p class="svg-container"></p>
<p class="svg-container"></p>

JS代码:

$(".svg-container").each(function() {
    $(this).append(doc);
}

但是只有最后一个p添加了,我试着用for循环写了也是一样。是什么原因呢?~求大神解答谢谢~


感谢各位的回答,其实我的doc的值是随机的
问题应该是这个,clone的方法应该要当doc是相同的元素才可以

$(".svg-container").each(function() {
    doc=Math.random();//打个比方,其实这里的doc是svg文件
    $(this).append(doc);
}

提问的时候太想当然了以为这里的随机应该和添加没关系,抱歉抱歉~


。。。底下的回答是可以解决的。。。是我写错了 我的锅!

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(3)
PHP中文网

append添加到元素的时候,已存在的元素是移动而不是复制,你用了遍历,所以第一次是新增,后面都是移动前面新增的,最后当然就出现了只有最后一项有东西。
解决办法:
1、不要遍历,你用的是jQuery的类选择器,可以直接$(".svg-container").append(doc),它会自动复制多份保存append进去
2、遍历的时候手动复制一份,$(this).append(doc.clone())
3、doc改成字符串

天蓬老师

同一个 DOM 添加到某个位置的时候,会从前一个位置移除,所以你需要 clone

$(".svg-container").each(function() {
    $(this).append(doc.clone());
}
PHP中文网

$(".svg-container") 要历遍

$.each($(".svg-container"), function() {

        $(this).append('doc');
    });
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号