.attr('checked','checked')/。attr('checked','true')不在html中添加属性

时间:2014-12-28 19:08:32

标签: jquery html jquery-1.4

这是我的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。

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);
}