我正面临一个问题,即尝试克隆父div,然后直接将其添加到自身下方。只要最后一个节点,我的功能就可以正常工作 选择如此:
<div>
<div> A </div>
<div> B </div>
<div> C </div>
</div>
将导致
<div>
<div> A </div>
<div> A.1 </div>
<div> B </div>
<div> C </div>
</div>
如果我克隆A.但是如果我再次克隆A,我会得到。
<div>
<div> A </div>
<div> A.1 </div>
<div> A </div>
<div> A.1 </div>
<div> B </div>
<div> C </div>
</div>
虽然我想
<div>
<div> A </div>
<div> A.1 </div>
<div> A.1 </div>
<div> B </div>
<div> C </div>
</div>
我的标记和代码如下:
<div id="maindiv">
<div>
<label>First</label>
<input type="button" class="repeat1" onclick="Repeat(this)"/>
</div>
<div>
<label>Second</label>
<input type="button" class="repeat1" onclick="Repeat(this)"/>
</div>
<div>
<label>Third</label>
<input type="button" class="repeat2" onclick="Repeat(this)"/>
</div>
</div>
function Repeat(obj)
{
var CurrentDiv = $(obj).parents("div[class^='repeat']:first");
$(CurrentDiv).clone().appendTo(CurrentDiv).end();
}
我还有类似的问题,删除所有子节点被删除的地方,而我只想删除一个div。任何帮助,将不胜感激。删除功能是
function Remove(obj)
{
var CurrentDiv = $(obj).parents("div[class^='repeat']:first");
CurrentDiv.remove();
}
答案 0 :(得分:6)
这是你想要做的吗?
function Repeat(obj)
{
var currentDiv = $(obj).parent("div");
currentDiv.clone().insertAfter(currentDiv);
}
更新: 如果你想要嵌套,试试这个:
<div id="maindiv">
<ul>First
<li>
<label>Sub-first</label>
<input type="button" class="repeat1" onclick="Repeat(this)"/>
</li>
</ul>
<ul>Second
<li>
<label>Sub-second</label>
<input type="button" class="repeat1" onclick="Repeat(this)"/>
</li>
</ul>
<ul>Third
<li>
<label>Sub-third</label>
<input type="button" class="repeat2" onclick="Repeat(this)"/>
</li>
</ul>
</div>
<script>
function Repeat(obj)
{
var CurrentLi = $(obj).parent("li");
CurrentLi.clone().insertAfter(CurrentLi);
}
</script>
答案 1 :(得分:1)
我认为你的标记很混乱:
<div>
<div> A </div>
<div> B </div>
<div> C </div>
</div>
在重复体中使用它:
$(obj).clone().text('A 1').insertAfter(obj);
应该产生:
<div>
<div> A </div>
<div>A 1</div>
<div> B </div>
<div> C </div>
</div>
同样使用此功能作为删除功能的主体:$(obj).siblings('div:first').remove();
然后应该这样做:
<div>
<div>A 1</div>
<div> B </div>
<div> C </div>
</div>
我想你要做什么或者我误解了吗?还有什么是“repeat *”类的siginifigance,还是用作你试图实现的选择器的东西?
答案 2 :(得分:1)
两件事:
(1)我读它的方式,对$ .end()的调用是多余的;我相信$ .end()只有在你打算在它之后连接更多的电话时才有用。
(2)看起来你试图将CurrentDiv的克隆作为CurrentDiv的直接子(而不是兄弟)附加;由于这些都是元素,我不确定它是否有意义。
但如果它确实有意义,那么在第二次调用Repeat()时克隆A和前一个克隆是完全自然的。
最后 - 仅供参考,您的变量和函数名称不是惯用的。从小写字母开始更习惯。