1

このようなテーブルにラジオボタンがあります

<form>
    <table class="table table-hover flights_table">
        <tr>
            <td>
                <input type="radio" class="flight" name="flight" />
            </td>
            <td>Fare type</td>
            <td>Price</td>
            <td>dep</td>
            <td>Arrival</td>
        </tr>
        <tr>
            <td>
                <input type="radio" class="flight" name="flight" />
            </td>
            <td>Fare type</td>
            <td>Price</td>
            <td>dep</td>
            <td>Arrival</td>
        </tr>
        <tr>
            <td>
                <input type="radio" class="flight" name="flight" />
            </td>
            <td>Fare type</td>
            <td>Price</td>
            <td>dep</td>
            <td>Arrival</td>
        </tr>
    </table>
</form>

およびjQueryコード

$('.flights_table tr').click(function (e) {
    //$('.flight').attr('checked', false);
    $(this).find('.flight').attr('checked', true);
});

目的は、ラジオが存在する行をクリックしたときにラジオを選択することであり、ラジオごとに1回しか機能しません。

例: 1st を選択してから 2nd をクリックし、1st を再度選択しようとしても機能しません。

私が使用したソリューションは、この質問で機能していると認められましたが、完全には機能しなくなりました。

コメント行の同じ結果の代わりに removeAttr も試しました。

http://jsfiddle.net/NsDnh/

4

3 に答える 3

2

これを試して

 $('tr').click(function (e) {
 $(this).$(input:radio).prop('checked', true);
});
于 2013-04-13T03:53:43.500 に答える
1

問題は、attr()jQuery バージョン 1.9 以降との非互換性の問題です。

jQuery 1.6 以降、.attr() メソッドは、設定されていない属性に対して undefined を返します。フォーム要素のチェック状態、選択状態、無効状態などの DOM プロパティを取得および変更するには、.prop() メソッドを使用します。

代わりにpropを使用してみてください:

 $('.flights_table tr').click(function (e) {
     //$('.flight').attr('checked', false);
     $(this).find('.flight').prop('checked', true);
 });

Updated Demo

于 2013-04-13T03:48:21.697 に答える