0

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

4

2 回答 2

2

如果要复制元素,请使用.clone(). 使用 HTML 很麻烦。

$('#copy').replaceWith(
    $('#E_DIV_H').clone().attr('id', 'copy')
);

无论如何,它不起作用的原因可能是因为(如您所知).prop()是在 1.6.0 中引入的;在此之前,.attr()完成了它的工作并且可能正在设置属性而不是属性。

于 2014-12-28T19:12:17.277 回答
1

要更新 jQuery 版本 <1.6 中的布尔属性checked,您应该使用 javascriptsetAttribute()方法,例如:

$("#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);
}
于 2014-12-28T19:42:32.623 回答