4

これはJQueryにとっては些細なことのように思えますが、この関数はフォーム全体を隠しています...誰かが私を正しい方向に向けることができますか?

$('form')
        .children()
        .filter(function(){
            return $(this).data('show', 'pro')
        })
        .show();
$('form')
         .children()
         .filter(function(){
             return $(this).data('show', 'home')
         })
         .hide();
4

3 に答える 3

9

メソッドに2つの引数を渡すため、古い値を取得する代わりにdataメソッドを設定します。

代わりにこれを使用してください:

$('form')
        .children()
        .filter(function(){
            return $(this).data('show') === 'pro';
        })
        .show();
$('form')
         .children()
         .filter(function(){
             return $(this).data('show') === 'home';
         })
         .hide();

パフォーマンスのためにセレクターをキャッシュすることもできます(またはを使用しますend)。

于 2012-01-27T16:22:29.310 に答える
7

data-show 値が HTML にあるか、各オブジェクトの属性として設定されている場合、セレクターを使用してこれを完全に行うことができます。

$('form > [data-show="pro"]').show();
$('form > [data-show="home"]').hide();

説明として:

  • form明らかにフォーム要素を選択し ます
  • >フォーム オブジェクトの子を選択します 。
  • の値に設定されている[data-show="pro"]という名前の属性を持つ子のみを選択します。data-show"pro"
  • .show()、選択したオブジェクトの show メソッドを呼び出します

data-show 値が.data()jquery メソッドで設定されているため、前の方法が機能しない場合は、セレクターでより簡単に使用できるデータ値ではなく、クラス名として状態を設定する方がよい場合があります。これらの値がデータではなくクラス名として設定されている場合、コードは次のようになります。

$('form > .pro').show();
$('form > .home').hide();

オブジェクトに複数のクラス名を付けることができ、オブジェクトの表示 (CSS スタイル、可視性、書式設定など) を制御するために直接使用されるオブジェクトの状態は、データではなくクラス名として表す方がはるかに優れていることを覚えておいてください。 -xxx 属性は、CSS または jQuery 操作のセレクターで使用する方がはるかに簡単であるためです。

于 2012-01-27T16:33:08.157 に答える
0

コードから何をしようとしているのかよくわかりません。

JQで「data-」にアクセスするには、次を使用します。

$(elementSelector).attr('data-XXX');

ここで、data-XXX はタグの属性です。これは、私が見たIE7までのすべてのブラウザーで機能します。

于 2012-01-27T16:22:47.687 に答える