如何使用jQuery重置单选按钮,使其未选中
如何使用jQuery重置单选按钮,使其未选中
我在HTML中有一个单选按钮,像这样:
1 2 3 4
它在一个form标签中,当用户提交表单时,我想让所有单选按钮回到默认状态,也就是没有一个被选中。
我有这段代码,但它报错说[0]为空或不是一个对象
$('input[@name="correctAnswer"]')[0].checked = false; $('input[@name="correctAnswer"]')[1].checked = false; $('input[@name="correctAnswer"]')[2].checked = false; $('input[@name="correctAnswer"]')[3].checked = false;
我在IE 6中进行这个操作。
在jquery中,设置单选按钮状态的最佳方式:
HTML:
Orange Pink Black Pinkish Purple
Jquery(1.4+)代码以预先选定一个按钮:
var presetValue = "black"; $("[name=color]").filter("[value='"+presetValue+"']").attr("checked","checked");
在Jquery 1.6+代码中,首选.prop()方法:
var presetValue = "black"; $("[name=color]").filter("[value='"+presetValue+"']").prop("checked",true);
取消选定按钮:
$("[name=color]").removeAttr("checked");
在jQuery 1.6之前的版本中使用:
$('input[name="correctAnswer"]').attr('checked', false);
在jQuery 1.6之后的版本中,您应该使用:
$('input[name="correctAnswer"]').prop('checked', false);
但如果您使用1.6.1+,则可以使用第一种形式(见下面的注释2)。
注释1:第二个参数重要的是使用false而不是"false",因为"false"不是一个假值。例如:
if ("false") { alert("Truthy value. You will see an alert"); }
注释2:自jQuery 1.6.0以来,现在有两个类似的方法,.attr
和.prop
可以做两件相关但稍微不同的事情。在这种特定情况下,如果您使用1.6.1+,则上面提供的建议可以正常使用。如果您使用1.6.0,则不起作用,您应该升级。如果您想要了解详情,请继续阅读。
详细信息:在使用直接的HTML DOM元素时,有属性附加到DOM元素(checked
、type
、value
等),这些属性提供了一个接口来运行HTML页面。还有.getAttribute
/.setAttribute
接口,它提供对HTML属性值的访问,这些值是在HTML中提供的。在jQuery 1.6之前,jQuery通过提供一个方法,.attr
来访问这两种类型的值,这使得两者之间的区别变得模糊。而jQuery 1.6+提供了两种方法,.attr
和.prop
来区分这些情况。
.prop
允许您在DOM元素上设置一个属性,而.attr
允许您设置HTML属性值。如果您正在使用平面DOM并设置checked属性,elem.checked
,为true
或false
,您会更改运行时的值(用户看到的),返回的值跟踪页面状态。不过,elem.getAttribute('checked')
仅返回初始状态(并根据HTML中的初始状态返回'checked'
或undefined
)。在1.6.1+中,.attr('checked', false)
会同时执行elem.removeAttribute('checked')
和elem.checked = false
,因为该更改引起了许多向后兼容性问题,它无法确定您想设置HTML属性还是DOM属性。在.prop的文档中查看更多信息。