jQuery:使用attr()检查单选按钮不起作用?

时间:2011-02-08 19:30:44

标签: jquery

不确定这是否是jQuery 1.4.2中的错误 - 我无法弄清楚为什么这不起作用。

我需要检查单选按钮。我正在使用attr({'checked':'checked'}),我也尝试attr('checked':true) - 没有人会工作。但是,如果我在同一个单选按钮上attr('title':'whatever'),没有任何其他变化,那么每次都有效。

我遗漏的title属性和checked属性之间是否存在一些模糊的差异?它们都是您日常的HTML属性。那么为什么一个工作而另一个工作呢?

以下是代码:

$('.formradiodiv').live('click', function() {
      //remove checked radio btns
      $('input', $(this).parents('#radiogroup')).each(function() {
            $(this).removeAttr('checked');
   });
      $('input', $(this)).attr('checked', true);
});

编辑:好吧,我相信我明白了。显然它一直很有效,而且只是我的头暂时在tukka tukka土地或其他东西。

我正在检查源代码,看看jQuery是否已将“checked”attr添加到我点击的单选按钮:在Firefox中,突出显示内容,右键单击>查看选择来源。这样做通常会显示JavaScript对DOM所做的所有更改,我希望在源代码中看到该属性。

此时,HTML单选按钮已通过CSS隐藏。这就是我首先需要这个的原因 - 我用图像替换了默认的单选按钮。

所以在源代码中,我没有在单选按钮上看到checked属性,因此我认为jQuery无法正常工作。但是一旦我删除了CSS规则,并显示了测试按钮,我就看到它们确实得到了正确的检查。努夫说。

非常感谢所有评论的人。我会投票给你们。 干杯

3 个答案:

答案 0 :(得分:3)

$('selector').attr('checked', true);肯定有用!

编辑我在你的问题中意识到你使用的对象符号{ 'key' : 'value' }适用于.attr()函数,但是你忽略了括号'{... }”。要修复您的示例,您需要$('selector').attr({ 'checked': true });

答案 1 :(得分:2)

黑暗中的Jab:我怀疑$('input', $(this))除了复选框之外还匹配其他类型的<input>元素,并且在设置checked时出现问题这些元素的属性。

尝试将选择器限制为仅选中复选框(另请注意,在将其用作选择器上下文时,不需要将this包裹起来):

$("input:checkbox", this).attr("checked", "checked");

答案 2 :(得分:1)

试试这个:

$('input', $(this)).is(':checked')

这是link可能会有所帮助。