【问题标题】:jQuery radio button "checked" attribute not firingjQuery单选按钮“选中”属性未触发
【发布时间】:2013-01-28 06:02:47
【问题描述】:

我正在尝试根据用户检查的单选按钮向 div 添加文本,但无论检查哪个属性,它最终都会触发“else”块,并且每次都显示“女性”。

请帮忙!

<input type="radio" name="gender" class="gender" id="male" value="male">Male<br />
<input type="radio" name="gender" class="gender" id="female" value="female">Female<br />

$(".gender").change(function () {                 
if ($("#male").attr("checked")) {
        $("#content").text("male");
    }
    else {
        $("#content").text("female");
    }
});

【问题讨论】:

  • 我想你不能直接设置值

标签: javascript jquery radio-button checked


【解决方案1】:

您的代码在jQuery 1.8 或更短时间之前都可以使用。 http://jsfiddle.net/Dnd2L/

在最新版本中,.attr 用于在 HTML 中定义的属性,.prop 映射到动态元素的属性并返回当前值。 http://jsfiddle.net/Dnd2L/1/

关于attrprop的更多信息-https://stackoverflow.com/a/5876747/297641

【讨论】:

    【解决方案2】:

    或者如果你的收音机没有类使用

    $("input[name='gender'][checked='checked']").val();
    

    获取选中单选的值。要更改检查的内容,请将要检查的 cbx 的值放入 val() 中,即...val("male");

    【讨论】:

      【解决方案3】:

      您并不特别需要 if,因为您的单选按钮是分组的,不可能有多项选择。

      你可能想改用这个:

      $(".gender").change(function () {                 
          $("#content").text($(this).val());
      });
      

      JSFiddle:http://jsfiddle.net/3Lsg6/

      【讨论】:

        【解决方案4】:

        使用.prop('checked') 而不是.attr('checked')。后者基于 HTML 属性,该属性始终为 false,因为它不在 DOM 中。 .prop 可用于检查 DOM 中可能不可见的属性更改。

        http://jsfiddle.net/Xxuh8/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-05-26
          • 2012-10-15
          • 2011-04-27
          • 1970-01-01
          • 1970-01-01
          • 2012-11-27
          相关资源
          最近更新 更多