我正在克隆一个元素并将其添加到DOM中。我原以为新创建的克隆元素内部的
为了说明这一点,我创建了以下脚本。点击“cloneIt”后,会添加一个新元素,然后单击新元素时,
如何克隆一个元素并使回调适用于新克隆的对象? https://stackoverflow.com/
this
指向自身,但实际上它似乎指向原始克隆元素。为了说明这一点,我创建了以下脚本。点击“cloneIt”后,会添加一个新元素,然后单击新元素时,
this
将指向原始克隆元素。我的愿望是data('type')
显示“added”。如何克隆一个元素并使回调适用于新克隆的对象? https://stackoverflow.com/
$('.fileupload').fileupload({
start: function (e, data) {
console.log('start', this, $(this).parent().data('type'));
}
})
.on('fileuploadsubmit', function (e, data) {
console.log('fileuploadsubmit', this, $(this).parent().data('type'));
});
$('#cloneIt').click(function () {
$('#clone').clone(true).removeAttr('id').data('type', 'added').appendTo('#container');
});
#clone {
display:none;
}
<button id="cloneIt">cloneIt</button>
<ul id="container">
<li id="clone" data-type="clone">
<input class="fileupload" name="file" type="file" />
</li>
<li data-type="existing">
<input class="fileupload" name="file" type="file" />
</li>
</ul>
$('.fileupload')
,然后再创建克隆,它将不会被包括在内。仅更改数据属性似乎只有在使用.attr('data-type','added')
时才有效。 - Shikkediel.attr()
提供了相同的结果。请参见 http://jsfiddle.net/fq4rqc1u/5/。我将$('.fileupload')
应用到#clone
和具有data-type
为existing
的另一个单个input
上,这两者似乎都有效。然而,当我克隆时,它仍然保留着现有的数据值。也许需要某种回调函数来代替直接访问this
? - user1032531console.log($(this).parent().index());
会输出什么? - Roamer-18880
。 - user1032531this
可靠地指向原始元素,而不是克隆元素。 - Roamer-1888