zl程序教程

您现在的位置是:首页 >  前端

当前栏目

jquery无法设置checkbox选中即没有变成选中状态

jQuery状态 设置 无法 没有 变成 选中 checkbox
2023-06-13 09:15:24 时间
复制代码代码如下:

$("input").attr("checked","checked")

设置以后checkbox并没有变成选中状态,用chrome调试看了一下,checkbox中确实有checked属性,而且,值为checked,但是页面显示仍然为未选中状态
复制代码代码如下:

$("input").prop("checked",true);


ttributes和properties之间的差异在特定情况下是很重要。jQuery1.6之前,.attr()方法在取某些attribute的值时,会返回property的值,这就导致了结果的不一致。从jQuery1.6开始,.prop()方法方法返回property的值,而.attr()方法返回attributes的值。

例如,selectedIndex,tagName,nodeName,nodeType,ownerDocument,defaultChecked,和defaultSelected应使用.prop()方法进行取值或赋值。在jQuery1.6之前,这些属性使用.attr()方法取得,但是这并不是元素的attr属性。他们没有相应的属性(attributes),只有特性(property)。

例如,考虑一个DOM元素的HTML标记中定义的<inputtype="checkbox"checked="checked"/>,并假设它是一个JavaScript变量命名的elem:

elem.checkedtrue(Boolean)将改变复选框的状态
$(elem).prop("checked")true(Boolean)将改变复选框的状态
elem.getAttribute("checked")"checked"(String)不会改变的复选框的初始状态;
$(elem).attr("checked")(1.6)"checked"(String)不会改变的复选框的初始状态;
$(elem).attr("checked")(1.6.1+)"checked"(String)将改变复选框的状态
$(elem).attr("checked")(pre-1.6)true(Boolean)将改变复选框的状态
根据W3C的表单规范,在checked属性是一个布尔属性,这意味着只要该attribute存在,即使它没有值,或是一个空字符串,该属性对应的property就是true。以下推荐的是兼容浏览器方式,判断checkbox元素的checked属性是否为"真"的方法:
复制代码代码如下:
if(elem.checked)
if($(elem).prop("checked"))
if($(elem).is(":checked"))

如果你使用jQuery1.6,代码if($(elem).attr("checked")),将获得一个属性(attribute),它不改变该复选框被选中和选中。它只是用来存储默认或选中属性的初始值。为了保持向后兼容,.attr()方法从jQuery1.6.1+开始除了返回属性值外,还会更新property属性,因此booleanattribute(布尔属性)不需要通过.prop()来改变其值。推荐使用上述方法之一,来取得checked的值。