jQuery 1.6 中可能存在的错误 - $(...).attr(“checked”) 不起作用
我的表单上有两个单选按钮,直到我开始使用 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 selected”,因为 jQuery(radiobutton).attr("checked" )
始终为空。
看看这个 jsfiddle,并在 1.5.2 和 1.6 之间更改 jQuery 版本,看看我的意思。
I have two radio buttons on my form and up until I started using jQuery 1.6 the following code worked fine:
<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>
Once I start using jQuery 1.6, it always shows "none checked" because jQuery(radiobutton).attr("checked")
is always empty.
Take a look at this jsfiddle, and change jQuery version between 1.5.2 and 1.6 to see what I mean.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
看看这个问题:.prop() vs .attr()
尝试用这个来代替你的代码:
也在最新的 jQuery 1.6 中.1 他们修复了 1.6
attr
的一些问题Take a look at this question: .prop() vs .attr()
Try this for your code instead:
Also in the newest jQuery 1.6.1 they fixed some of the 1.6
attr
problems我也看到过这个。其他答案对为什么会这样以及何时恢复(仅适用于吸气剂?)有一些见解;与此同时,我一直在使用
跨版本解决方法。
希望这有帮助!
I've been seeing this too. The other answers have some insights as to why this is, and when it'll be reverted (only for getters?); in the meantime, I've been using
as a cross-version workaround.
Hope this helps!
这不是错误,而是更改:
http://christierney.com/2011/05/06/understanding-jquery-1-6s-dom-attribute-and-properties/
另外,正如 @Neal 提到的,他们在这方面做了一些工作最新的1.6.1 候选版本< /a>.
来自 RC 链接:
那里有更多解释,但您可能可以跳到 1.6.1 并且没问题...
编辑 - 在 2011 年 5 月 16 日添加到下面
John Resig 刚刚权衡了周围所做的更改这以及为什么......读得好......
http://ejohn.org /blog/jquery-16-and-attr/
This is not a bug but a change:
http://christierney.com/2011/05/06/understanding-jquery-1-6s-dom-attribute-and-properties/
Also, as mentioned by @Neal they have worked on this a bit in the latest 1.6.1 release candidate.
From the RC link:
There's a lot more explanation there but you might be able to skip to 1.6.1 and be fine...
EDIT - Added below on 5/16/11
John Resig just weighed in on the changes made around this and why.... Good read....
http://ejohn.org/blog/jquery-16-and-attr/
我无法解释版本之间的变化,但有一个选择器专门寻找检查 - http:// api.jquery.com/checked-selector/
I can't explain the change between versions, but there is a selector specifically looking for checked - http://api.jquery.com/checked-selector/
你可以这样破解它:
jQuery("input[name='test']:checked")
演示:
http://jsfiddle.net/8Eqpu/15/
You can hack it this way:
jQuery("input[name='test']:checked")
The demo:
http://jsfiddle.net/8Eqpu/15/
.attr()
和.data()
在 jQuery 1.6 中发生了巨大的变化。这篇文章有更好的解释:
升级到 jQuery 1.6:您可能遇到的问题
希望这会有所帮助。干杯
.attr()
and.data()
have changed dramatically in jQuery 1.6.It's better explained on this article:
Upgrading to jQuery 1.6: Problems you may face
Hope this helps. Cheers