0

私はjqueryの初心者ですが、各行に別のフィールド(チェックボックス)に依存するフィールドを持つテーブルがあります。テーブルにあるので、それらをまとめて処理する必要があります。next() を正しく使用しているとは思いませんが、次の .subnet_mask を取得しようとしています。これは、非表示にするのと同じ行にあるためです。チェックボックスがオンになっているかどうかにかかわらず、非表示と表示を処理できるように、そこまで到達したら更新する必要もあります。

$(function() {
    $('.dhcp').each(function() {
        $(this).click(function(){
            $('.subnet_mask').next().hide();
        });
    });
});

どんな助けでも大歓迎です!

編集: OK OK :) ページは実際には VisualForce (セールスフォース用) で書かれています。簡単にするために、テーブル (さまざまなレコードを表す最大 20 行) にラップされた単なるフォームと言って、.dhcp クラスのチェックボックス フィールドと、チェックボックスに基づいて表示/非表示にする必要がある .subnet_mask と呼ばれるフィールドを表示します。それは役に立ちますか?

4

3 に答える 3

1

私はむしろこれをしたいです

$('.dhcp').on('click', function() {
    $(this).nextAll('.subnet_mask').toggle();
});

次に、クリックするたびに次を表示/非表示にします.submask(.submask<tr>.dhcp

于 2012-10-30T16:15:39.280 に答える
0

関連する HTML を確認すると、この提案が変わる可能性がありますが、次のことをお勧めします。

$('.dhcp').click(
    function(){
        $(this).closest('tr').find('.subnet_mask').hide();
    });

これは、クリック イベントに応答して、行ごとに 1 つの要素しかないことを前提としています.subnet_mask(そうでない場合、すべての要素が非表示になります)。これはチェックボックスに依存していると述べているため、change()メソッドを使用すると、おそらく次のようになります。

$('.dhcp').change(
    function(){
        var that = $(this);
        if (that.is(':checked')) {
            that.closest('tr').find('.subnet_mask').hide();
        }
        else {
            that.closest('tr').find('.subnet_mask').show();
        }
    });

参考文献:

于 2012-10-30T16:14:54.240 に答える
0

next の使い方が間違っています。次のようになります。

$(function() {
    $('.dhcp').each(function() {
        $(this).click(function(){
            $(this).next('.subnet_mask').hide();
        });
    });
});

この場合、私は.dhcp.subnet_maskが実際に兄弟であると想定しています。後者は前者の直後に来ます。それ以外の場合は.nextAll().next()

以下、要点を修正。

于 2012-10-30T16:20:12.837 に答える