Javascript 为什么下面的代码生成4个元素而不是2个?
我试图理解,为什么下面的代码会生成四个新段落而不是两个 有人能解释一下($()p)之前($()克隆()的Javascript 为什么下面的代码生成4个元素而不是2个?,javascript,jquery,html,Javascript,Jquery,Html,我试图理解,为什么下面的代码会生成四个新段落而不是两个 有人能解释一下($()p)之前($()克隆()的$()中到底发生了什么吗零件 $(文档).ready(函数(){ $(“按钮”)。单击(函数(){ $(“p”)。在($(“p”).clone()之前; }); }); 第1段 第2段 克隆所有p元素,并将它们附加到body元素 克隆复制每个并返回前面插入的两个段落元素 一个更有意义的解释: HTML中有两个元素 $(“p”).clone()克隆这两个元素并将它们传递给before()
$()中到底发生了什么吗代码>零件
$(文档).ready(函数(){
$(“按钮”)。单击(函数(){
$(“p”)。在($(“p”).clone()之前;
});
});
第1段
第2段
克隆所有p元素,并将它们附加到body元素
克隆复制每个
并返回前面插入的两个段落元素
一个更有意义的解释:
- HTML中有两个
元素
$(“p”).clone()克隆这两个元素并将它们传递给before()
before()
执行两次,每个段落执行一次
作为输出,您将获得2*2=4个新段落。$(“p”).clone()单独产生结果
然后,$(($p”).clone()之前的$($p”).clone()表示它将在两个段落标记之前附加$($p”).clone()的结果
当您克隆()时,它会创建p
元素的深度副本
before()
不仅会将副本附加到现有元素,还会附加到克隆的元素
使用更具体的类名来附加它们,而不是$(“p”),特别是当克隆的元素和您之前插入的元素是相同类型的元素时
至少使用像这样的不同元素
$(“p”).clone().appendTo('body')代码>
$(文档).ready(函数(){
$(“按钮”)。单击(函数(){
$(“p”).clone().appendTo('.clone target');
});
});
第1段
第2段
克隆所有p元素,并将它们附加到body元素
能否为此创建一个代码段?这将使我们更容易看到实际导致问题的行为。制作结果的屏幕截图并发布在此处。需要认识到内部$(选择器)。someMethod()
对$(选择器)创建的集合中的所有元素进行内部循环
我认为问题在于为什么它会生成4而不是2。推理是有缺陷的before()
不会创建任何内容itself@char啊,我措词不当,asecond@char修正了。这就是你晚上睡两个小时所得到的:)谢谢。这很好地回答了我的问题。