单击时克隆和追加会使多个元素和切换不起作用
Clone and append on click makes multiple elements and toggle not working
我正在尝试克隆和附加元素。 追加后,我添加了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'));
});
JSfiddle
更新:
我更新了克隆传递var newParent = $('.parent').clone(true);
- 动画作品!
你应该只克隆第一个元素(或最后一个元素):
var newParent = $('.parent:first').clone(true);
例 1
使用.clone(true)
似乎可以修复动画。另一种解决方案是在单击时定位父级并委派.parent .header
,因为克隆的.parent
在初始加载后被添加到 DOM 中:
$('#content ').on('click', '.parent .header', function () {
而不是
$('.parent').on('click', '.header', function () {
例 2
克隆一个元素意味着之后将有两个相同的元素(也具有相同的类)。
每次单击该按钮时,都会克隆具有 .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(){ [...] });
相关文章:
- iframe中的jQuery查找元素不起作用
- jQuery选择ajax调用中附加的元素不起作用
- 我的ID获取元素不起作用
- 为什么从 Angular 服务中的对象中删除此元素不起作用
- 将onclick事件附加到元素不起作用
- <标题>插入SVG的元素不起作用
- 使用next()的jQuery目标元素不起作用
- HTML输入元素不起作用
- 使用css显示和隐藏元素不起作用
- 焦点到 DOM 元素不起作用
- Jquery 在图像错误上对多个元素不起作用
- 按类名获取元素不起作用
- jQuery - 'addClass' to HTML 元素 - 不起作用,但在 Chrome 中正确显
- 具有 ID AND 类的 jQuery 选择器目标元素不起作用
- Ajax 对 xml 页面的响应以获取标题元素不起作用
- 单击新 DOM 元素不起作用的事件
- Javascript 添加的动态 svg 元素不起作用
- jQuery on handler 对插入的元素不起作用
- 从表单中删除添加的元素不起作用
- 相对于另一个元素的位置元素不起作用