jQuery 1.6 中可能存在的错误 - $(...).attr(“checked”) 不起作用

发布于 2024-11-06 18:39:20 字数 741 浏览 1 评论 0原文

我的表单上有两个单选按钮,直到我开始使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

浅语花开 2024-11-13 18:39:20

看看这个问题:.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 的一些问题

Take a look at this question: .prop() vs .attr()

Try this for your code instead:

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")      
}

Also in the newest jQuery 1.6.1 they fixed some of the 1.6 attr problems

夜还是长夜 2024-11-13 18:39:20

我也看到过这个。其他答案对为什么会这样以及何时恢复(仅适用于吸气剂?)有一些见解;与此同时,我一直在使用

$('#thingy').is(':checked');

跨版本解决方法。

希望这有帮助!

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

$('#thingy').is(':checked');

as a cross-version workaround.

Hope this helps!

仙女 2024-11-13 18:39:20

这不是错误,而是更改:

http://christierney.com/2011/05/06/understanding-jquery-1-6s-dom-attribute-and-properties/

另外,正如 @Neal 提到的,他们在这方面做了一些工作最新的1.6.1 候选版本< /a>.

来自 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 刚刚权衡了周围所做的更改这以及为什么......读得好......

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:

Upgrading From 1.5.2 to 1.6.1 - With the
introduction of the new .prop() method
and the changes to the .attr() method,
jQuery 1.6 sparked a discussion about
the difference between attributes and
properties and how they relate to each
other. It also came with some
backwards compatibility issues that
have been fixed in 1.6.1. When
updating from 1.5.2 to 1.6.1, you
should not have to change any code.

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/

白首有我共你 2024-11-13 18:39:20

我无法解释版本之间的变化,但有一个选择器专门寻找检查 - 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/

許願樹丅啲祈禱 2024-11-13 18:39:20

你可以这样破解它: 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/

天煞孤星 2024-11-13 18:39:20

.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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文