0

http://jsfiddle.net/Yuxfv/2/

ラベルをクリックして、それがどのラジオ ボタン グループに属しているかを確認できるようにしたいと考えています。私はこれを試しましたが、ラベルに最も近いものではなく、常に li (name=left) の後の最初の入力を見つけます。どうすれば修正できますか?

$('input[type=radio]:enabled + label').click(function () {
    var thisGroupName = $(this).closest('ul').find('input[type=radio]:enabled').attr('name');
    alert("group name: " + thisGroupName);
});

HTML

<ul>
    <li>
        <input type="radio" class="radio-red" name="left" id="a1">
        <label for="a1">a1</label>
        <input type="radio" class="radio-blue" name="right" id="a2">
        <label for="a2">a2</label>
    </li>
    <li>
        <input type="radio" class="radio-red" name="left" id="b1">
        <label for="b1">b1</label>
        <input type="radio" class="radio-blue" name="right" id="b2">
        <label for="b2">b2</label>
    </li>
    <li>
        <input type="radio" class="radio-red" name="left" id="b3">
        <label for="b3">b3</label>
        <input type="radio" class="radio-blue" name="right" id="b4">
        <label for="b4">b4</label>
    </li>
</ul>
4

4 に答える 4

2

に行っulたり来たりしないでliください。のグループprev()を取得する必要がある場合は、使用してみてください:input

$('input[type=radio]:enabled + label').click(function () {
   var thisGroupName = $(this).prev('input[type=radio]:checked').attr('name');
   alert("group name: " + thisGroupName);
});

より具体的に言うと、あなたにはfor属性があります。なぜそれを使わないのですか?

$('input[type=radio]:enabled + label').click(function () {
       var thisGroupName = $("#" + $(this).attr("for")).attr('name');
       alert("group name: " + thisGroupName);
});
于 2013-07-24T18:30:42.947 に答える
0

そのように DOM をトラバースしても意味がありません。ラベルには要素への参照があります。ラベルをクリックしたときにクリックするために使用されます。

 $('input[type=radio]:enabled + label').click(function () {
    var input_id = '#'+$(this).attr('for');
    var group_name = $(input_id).attr('name');
    alert("group name: " + group_name );
 });
于 2013-07-24T18:36:41.597 に答える