以下代码将带有radiobutton的单元格添加到表格的每一行并检查第一行:
$(document).ready(function () {
$('tr').prepend('<td>');
$('<input name="delete" type="radio"/>')
.prependTo('tbody td:first-child')
.first().attr('checked', true);
});
它不会检查IE 11,jquery-2.1.4的第一个无线电按钮,但可以与FireFox,Chrome和MS Edge一起正常工作;函数last()
在这种情况下适用于IE,如预期的那样。这是一个错误吗?
答案 0 :(得分:2)
与first
无关;它与第一个做的事情有关。
将true
/ false
与checked
一起使用时,您希望使用属性,而不是属性。当jQuery使用带有布尔属性的attr
时,jQuery过去常常跳过很多的箍来为人们设置可靠的跨浏览器属性/属性,但是很多这些箍被删除了(只有一些他们在v1.6中添加了prop
。
如果您使用prop
,它也适用于IE11:
$(document).ready(function () {
$('tr').prepend('<td>');
$('<input name="delete" type="radio"/>')
.prependTo('tbody td:first-child')
.first().prop('checked', true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<table>
<tbody>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
</tbody>
</table>
仅为了完整性:如果您 想要使用该属性,the specification要求该属性必须删除/不存在,因为该标志不是设置,并且必须是""
或属性的名称(在本例中为"checked"
)才能设置:
元素上存在布尔属性表示真值,缺少属性表示假值。
如果该属性存在,则其值必须是空字符串或者是属性规范名称的ASCII不区分大小写匹配的值,没有前导空格或尾随空格。
注意:布尔属性上不允许使用值“true”和“false”。要表示错误值,必须完全省略该属性。
答案 1 :(得分:2)
您要将checked
属性设置为"true"
而不是"checked"
,这仅适用于选择将其作为值"checked"
的浏览器。此外,由于属性是输入的初始值,因此在创建元素后它并不总是有效。
您希望设置当前值而不是初始值,即checked
属性而不是checked
属性。使用prop
方法将checked
属性设置为true
:
$(document).ready(function () {
$('tr').prepend('<td>');
$('<input name="delete" type="radio"/>')
.prependTo('tbody td:first-child')
.first().prop('checked', true);
});