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 内のみを検索できます。 closestは、そのクラス (包含 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 に答える