我在尝试克隆 HTML 的特定部分时遇到问题。
我有一个复制按钮,可以复制添加的最后一个元素,例如,一个 div 包含一个输入框,如果他们想添加另一个或者他们也想复制它。
除了 Internet Explorer(从 8 开始的所有版本)之外,这似乎在每个浏览器上都可以正常工作。
我不断收到错误对象不支持属性或方法“克隆”
首先,我必须将按钮的单击事件发送到函数“add_another_repeat”,因为可能存在多个 add_another 按钮的情况,我必须针对最近的父级
$('p.add_another').unbind('click').click(function(e){
e.preventDefault();
var next = $(this).closest('.option').find('.repeat_block:last').find('p input[type="checkbox"]').attr('name');
next = next.replace(/elements\[[A-Za-z0-9\_]+\]\[[A-Za-z0-9\_]+\]\[([0-9]+)\]/, '$1');
add_another_repeat($(this),next);
return false;
});
和 add_another 函数
function add_another_repeat(ev,i) {
//alert('I: '+i);
parent = ev.closest('.option').find('.repeat_block:last');
// make copy and add to DOM
var add = parent.clone();
parent.after(add);
// increment the array keys
var r = add.find('p input[type="checkbox"]').attr('name'),
pattern = '\['+i+'\]',
regex = new RegExp(pattern,'g'),
next = parseInt(i)+1;
add.find('p input[type="checkbox"]').attr('name', r.replace(regex, next));
add.find('input,textarea,select').each(function(){
r = $(this).attr('name');
pattern = '\['+i+'\]',
regex = new RegExp(pattern,'g');
$(this).attr('name', r.replace(regex, next));
//$(this).val('');
r = $(this).attr('id');
pattern = '\_'+i;
regex = new RegExp(pattern, 'g');
$(this).attr('id', r.replace(regex, '_'+next));
});
$('p.add_another button').unbind('click').click(function(){
add_another_repeat($(this),next);
return false;
});
// tidy up the first elements
//parent.find('h3 input[type="checkbox"]').attr('checked', 'checked'); //.attr('disabled', true);
parent.find('p.add_another').remove();
return false;
}
错误似乎出现在这一行var add = parent.clone();
但仅出现在IE ONLY
有没有人对可能出了什么问题有一些建议,因为我已经没有想法了