1

我有很多名为“each_item”的div,一个接一个。我正在尝试检查是否在这个 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');
    });

如果你能帮助我,非常感谢。

4

2 回答 2

4

您可以使用find仅在 div 内查找。 最接近的将找到与该类(包含 div)最近的祖先。

$('#btn').click(function(){

    if ($(this).closest(".each_item").find('input:radio[name=gender]:checked').length < 1)
        alert('nothing was checked');
    });

});

另请注意,如果您有多个相同的按钮id,那是无效的,并且可能会导致您出现问题。 ids 应该始终是唯一的。

于 2012-08-09T16:59:45.677 回答
1

采用.siblings()

$('#btn').on('click', function() {
    if ($(this).siblings('input:checked').length < 1) {
        alert('nothing was checked');
    }
});

您可以从选择器中删除:radioand [name=gender],因为它们过度定义了您实际搜索的内容。

于 2012-08-09T17:02:27.387 回答