我尝试默认设置单选按钮组设置,但我不能这样做。 我尝试这些方法:
$('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);
请帮助我,我如何解决这个问题。
答案 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 Aravindasamy中a 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]
元素位于tr
,tbody
或thead
,我相信tfoot
会有效(如果没有,为什么不呢?并且您在这些元素的第一行之前没有任何支持脚本的元素(因为这些元素是tbody
,thead
或tfoot
中唯一有效的两个元素。 )。
答案 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);
});
感谢。问题出在第一行,标题就在那里。