javascript - 在 .before() 中多次使用相同的参数并不像我预期的那样工作

标签 javascript jquery dom

HTML:

<div class="here">This is here</div>
<div class="insert">This is to be inserted</div>

jQuery:

$(document).ready(function() {
  var $m = $(".insert");
  $(".here").before($m);
});

它产生了预期的结果 - 剪切 insert div 并将其粘贴到 here div 之前。但如果代码如下,

$(".here").before($m, $m);

那么insert不会在here div之前出现两次。但是,如果我按照以下方式使用第一个参数以外的 div 作为第二个参数:

$(".here").before($m, $('<div class="insert2">This is insert 2</div>'));

然后 insertinsert2 div 都出现在 here div 之前。

如果两个参数相同,为什么两个 div 不会出现在 here div 之前?

最佳答案

您正在做的是将现有元素从一个地方移动到另一个地方;您不会创建它的额外副本。使用 .clone() 方法创建副本并插入到所需位置:

$(".here").before(
    $m         /*.attr("title", "original")*/,
    $m.clone() /*.attr("title", "copy # 1")*/,
    $m.clone() /*.attr("title", "copy # 2")*/
);

您的另一个示例创建了一个新元素,这就是它按预期工作的原因。

关于javascript - 在 .before() 中多次使用相同的参数并不像我预期的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19924645/

相关文章:

javascript - 如何使用 Ionic Framework 下载文件到 Download 目录?

javascript - Jquery删除函数后续

javascript - Owl Carousel 滚动到点击的项目

php - radio 仅传递第一个值

javascript - 如果存在两个 DOM 代码,则会出现错误并且代码不会运行(但如果每个单独使用,则运行顺利)

javascript - FQL 选择列名 "AS"别名

javascript - 为什么不使用字体大小的百分比?

javascript - 动态添加li和div到html页面

java - Dom 设置元素错误

html - URL anchor 附加到 Internet Explorer 中的 title 属性——为什么?