设置单选按钮组已选中

时间:2014-10-10 08:24:23

标签: javascript jquery radio-button attr

我尝试默认设置单选按钮组设置,但我不能这样做。 我尝试这些方法:

$('tr:first').closest('input:radio').attr('checked', true);


$('tr:first td input:radio').each(function(){
    $(this).attr('checked', true);
});

$('tr:first').closest('input:radio').attr('checked', true);

请帮助我,我如何解决这个问题。

4 个答案:

答案 0 :(得分:0)

closest将在层次结构中向上移动(即将搜索父元素),我认为您正在尝试在tr内找到单选按钮。在这种情况下,您可以使用.find()获取单选按钮,请参阅下面的代码 -

$('tr:first').find('input[type=radio]').prop('checked', true);

注意 - jQuery 1.6中引入.prop(),earliar .attr()用于更改属性。现在.prop()建议使用而不是.attr()

答案 1 :(得分:0)

要设置checked 属性,请使用prop,而不是attr。你的第二个代码块最接近正确(两个使用closest没有多大意义,closest查看祖先元素,单选按钮不能包含表行),但它会在第一行的所有单选按钮上设置checked。如果这是你想要的,prop应该这样做:

$('tr:first td input:radio').each(function(){
    $(this).prop('checked', true);
});

$('tr:first td input:radio').each(function(){
  $(this).prop('checked', true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td>
        <label><input type="radio" name="group"> First row</label>
      </td>
    </tr>
    <tr>
      <td>
        <label><input type="radio" name="group"> Second row</label>
      </td>
    </tr>
  </tbody>
</table>

正如Rajaprabhu Aravindasamya comment所指出的那样,each没有必要:

$('tr:first td input:radio').prop('checked', true);

$('tr:first td input:radio').prop('checked', true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td>
        <label><input type="radio" name="group"> First row</label>
      </td>
    </tr>
    <tr>
      <td>
        <label><input type="radio" name="group"> Second row</label>
      </td>
    </tr>
  </tbody>
</table>


附注:使用jQuery的选择器扩展(如:first:radio)会显着降低$()函数可以找到元素的速度,因为jQuery无法将查询卸载到浏览器的内置选择器引擎。当然,对于那些不是时间敏感的调用而言,对于那些喜欢使用真正的CSS选择器的调用并不重要。在这种情况下,如果您的tr:first-child td input[type=radio]元素位于trtbodythead,我相信tfoot会有效(如果没有,为什么不呢?并且您在这些元素的第一行之前没有任何支持脚本的元素(因为这些元素是tbodytheadtfoot中唯一有效的两个元素。 )。

答案 2 :(得分:0)

我相信正确的语法是

.prop('checked', true);

无论你想做什么。 例如:

$('tr:first-child td input[type=radio]').each(function(){
    $(this).prop('checked', true);
});

答案 3 :(得分:-1)

解决这个问题:

$('tr:nth-child(2) td input:radio').each(function () {
       $(this).attr('checked', true);
   });

感谢。问题出在第一行,标题就在那里。