我有很多div叫做“each_item”,一个接一个。 我正在尝试检查收音机是否已经在这个div中检查过。
我的问题是,使用我的jquery代码(见下文),所有“each_item”div的所有单选按钮都会被测试。我可能需要使用$(this)
,但我不知道如何在我下面使用的选择器中使用它(即$('input:radio[name=gender]:checked')
)
<div class='each_item'>
<input type='radio' name='gender' value='m'>
<input type='radio' name='gender' value='f'>
<input type='button' id='btn'>
</div>
我试过的jquery是这样的:
$('#btn').click(function(){
if ($('input:radio[name=gender]:checked').length < 1)
alert('nothing was checked');
});
非常感谢你能帮助我。
答案 0 :(得分:4)
您可以使用find仅查看div。 closest将找到与该类(包含div)最近的祖先。
$('#btn').click(function(){
if ($(this).closest(".each_item").find('input:radio[name=gender]:checked').length < 1)
alert('nothing was checked');
});
});
另请注意,如果您有多个具有相同id
的按钮,则无效且可能会导致您遇到问题。 id
应始终是唯一的。
答案 1 :(得分:1)
$('#btn').on('click', function() {
if ($(this).siblings('input:checked').length < 1) {
alert('nothing was checked');
}
});
您可以从选择器中删除:radio
和[name=gender]
,因为它们会过度定义您实际搜索的内容。