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>'));
然后 insert
和 insert2
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/