2

これは私のコードです、

<tr>
    <td>
        <input type="checkbox" class="cbx" name="cbx">
    </td>
    <td>
        <div>some content</div>
    </td>
    <td>
        <span class="book">Book now</span>
    </td>
</tr>

私のページには、これに似たテーブル行が約20行あります。私がやりたいのは、行の3番目のtdにあるスパンタグをクリックすると、同じ行にあるチェックボックスがオンになっている必要があるということです。

私はこれを試しましたが、機能しません、

$('.book').click(function() {
   $(this).parent().find('.cbx').attr('checked',true);
});

これを短くするのを手伝ってください、

よろしく。

4

3 に答える 3

2

シンプルで、.closest()メソッドを使用しtrて、あなたの.cbx!:)

$('.book').click(function() {
   $(this).closest('tr').find('.cbx').prop('checked',true);
});

TDあなたの例は、あなたが使用していたのはあなたの要素を指しているからです.parent()。使用する代わりに
到達するにはTR.parent().parent().closest('tr')

http://api.jquery.com/closest/
http://api.jquery.com/prop/

于 2013-01-06T12:07:26.113 に答える
1

コード.parent()で親<td>ノードを選択します。を選択するには、または:<tr>のいずれかを使用する必要があります。.parent().parent().closest("tr")

$(".book").on("click", function() {
    $(this).closest("tr").find(".cbx").prop("checked", true);
});

.prop("checked", true)またはを適用することをお勧めします.attr("checked", "checked")

于 2013-01-06T12:08:08.227 に答える
1

これは簡単に行うことができます

$( '.book' ).on( 'click', function() {
    var $tr = $( this ).parents( 'tr' ).eq( 0 );
    // get the parenting tr

    $( '.cbx', $tr ).attr( 'checked', true );
    // select elements matching '.cbx' inside of $tr and check them
} );
于 2013-01-06T12:13:36.247 に答える