我的表单上有两个单选按钮,直到我开始使用jQuery 1.6,以下代码运行良好:
<input type="radio" id="radio1" name="test"/>
<input type="radio" id="radio2" name="test"/>
<input type="button" onclick="testcheck()" value="Test"/>
<script>
function testcheck()
{
if (jQuery("#radio1").attr("checked"))
alert("first button checked");
else if (jQuery("#radio2").attr("checked"))
alert("second button checked");
else
alert("none checked")
}
</script>
一旦我开始使用jQuery 1.6,它总是显示“none checked”,因为jQuery(radiobutton).attr("checked")
始终为空。
看看这个jsfiddle,并在1.5.2和1.6之间更改jQuery版本,看看我的意思。
答案 0 :(得分:8)
看看这个问题:.prop() vs .attr()
请尝试使用此代码:
function testcheck()
{
if (jQuery("#radio1").prop("checked"))
alert("first button checked");
else if (jQuery("#radio2").prop("checked"))
alert("second button checked");
else
alert("none checked")
}
同样在最新的jQuery 1.6.1,他们修复了一些1.6 attr
问题
答案 1 :(得分:3)
这不是一个错误,而是一个改变:
http://christierney.com/2011/05/06/understanding-jquery-1-6s-dom-attribute-and-properties/
另外,正如@Neal所说,他们在最新的1.6.1 release candidate中对此进行了一些研究。
来自RC链接:
从1.5.2升级到1.6.1 - 随着 介绍新的.prop()方法 和.attr()方法的更改, jQuery 1.6引发了一场讨论 属性和。之间的区别 属性以及它们与每个属性的关系 其他。它也有一些 向后兼容性问题 已在1.6.1中修复。什么时候 你从1.5.2更新到1.6.1 不应该改变任何代码。
那里有更多解释,但你可以跳到1.6.1并且没问题......
编辑 - 在2011年5月16日添加
John Resig只是权衡了围绕这个做出的变化以及为什么......好好阅读......
答案 2 :(得分:3)
我也一直在看这个。其他答案有一些见解,为什么会这样,什么时候它会被还原(只有吸气者?);与此同时,我一直在使用
$('#thingy').is(':checked');
作为跨版本的解决方法。
希望这有帮助!
答案 3 :(得分:0)
我无法解释版本之间的变化,但有一个专门寻找选择的选择器 - http://api.jquery.com/checked-selector/
答案 4 :(得分:0)
答案 5 :(得分:0)
.attr()
和.data()
在jQuery 1.6中发生了巨大变化。
本文更好地解释了:
Upgrading to jQuery 1.6: Problems you may face
希望这会有所帮助。干杯