这是我的JavaScript,使用jQuery:
$("#E_DIV_H input[value='E,F']").attr('checked', 'checked');
var data = $('#E_DIV_H').html();
$('#copy').html(data);
当它将数据从一个<div>
(#E_DIV_H
)复制到另一个DIV(#copy
)时,它会取消选中该复选框,由于以下代码,该复选框已经过检查!
$("#E_DIV_H input[value='E,F']").attr('checked', 'checked');
使用Firebug,我看到.attr('checked', 'checked')
正在检查复选框而不添加属性。
是否有任何跨浏览器的解决方案?我正在使用jQuery 1.4.2。
答案 0 :(得分:2)
如果要复制元素,请使用.clone()
。使用HTML很麻烦。
$('#copy').replaceWith(
$('#E_DIV_H').clone().attr('id', 'copy')
);
无论如何,它不起作用的原因可能是因为(如你所知){1.6}引入了.prop()
;在此之前,.attr()
完成了它的工作,可能是设置属性而不是属性。
答案 1 :(得分:1)
要在jQuery版本&lt; 1.6中将布尔属性更新为checked
,您应该使用javascript setAttribute()
方法,例如:
$("#E_DIV_H input[value='E,F']")[0].setAttribute('checked', true);
如果要定位多个元素,则必须遍历集合,例如:
var els = document.querySelectorAll("#E_DIV_H input[value='E,F']");
for (var i=0; i < els.length; i++) {
els[i].setAttribute("checked", true);
}