我正在尝试克隆和追加元素。在我追加之后,我添加了toggle
动画。在第一次点击它工作正常。在我获得附加的多个元素之后。
动画也不起作用。
这是html:
<div class="parent hide">
<div class="header">
<h6>Header</h6>
</div>
<div class="content">
<p>paragraph content </p>
</div>
</div>
<div id="content">
</div>
<button>Add</button>
Js:
$('.parent').on('click', '.header', function () {
$(this).find('h6').toggleClass('name').end()
.siblings('.content').slideToggle();
});
$('button').on('click', function () {
var newParent = $('.parent').clone();
$('#content').append(newParent.removeClass('hide'));
});
更新
我更新了克隆传递var newParent = $('.parent').clone(true);
- 动画效果!
答案 0 :(得分:3)
你应该只克隆第一个元素(或者最后一个元素):
var newParent = $('.parent:first').clone(true);
使用.clone(true)
似乎可以修复动画。另一种解决方案是在点击并委派.parent .header
时将父目标定位,因为克隆的.parent
在初始加载后被添加到DOM中:
$('#content ').on('click', '.parent .header', function () {
而不是
$('.parent').on('click', '.header', function () {
答案 1 :(得分:1)
克隆元素意味着之后将会有两个相同的元素(具有相同的类)。
每次单击该按钮时,所有具有.parent类的元素都将被克隆并附加到#content
关于动画:
DOM不知道附加的元素,因此.on('click')不起作用。 尝试在.parent元素周围放置一个包装器,然后使用以下语法:
<强> HTML 强>
<div class="wrapper">
<div class="parent hide">
<div class="header">
<h6>Header</h6>
</div>
<div class="content">
<p>paragraph content </p>
</div>
</div>
<div id="content">
</div>
</div>
<button>Add</button>
<强> JS 强>
$('.wrapper').on('click', '.parent .header', function(){ [...] });