名前の長いリストを掲載したウェブサイトがあります。監視しやすくするために、テキストリンクをに入れたいと思います
(ロード時)すべて表示
(Word "pears"をクリックすると)class = "Apple"ですべての要素を非表示にします
(Word "apples"をクリックすると)class = "pear"ですべての要素を非表示にします
([すべて表示]をクリックすると)すべて表示
「入力時に」フィルタリングの本当に単純化されたバージョンのようになると思います。
このためのプラグインは存在しますか?どこから始めたらいいのかわからない!
うーん..次のようなリストがある場合:
<span class="Apple">red Apple</span>
<span class="Apple">green Apple</span>
<span class="pear">big pear</span>
<span class="pear">little pear</span>
以下はすべてを表示します:
$("span.*").show();
以下は、 'class = "Apple"'を持つすべての要素を非表示にします。
$("span[class='Apple']").hide();
または、 'class = "pear"'を持たないものをすべて非表示にすることもできます。
$("span[class!='pear']").hide();
この投稿にぶつかっただけで、古いことはわかっていますが、正直なところ、与えられた回答のどれもかなり役に立ちません。私の意見では、filter(':not()')
のように、:notのフィルターを使用して要素をフィルターで除外できます。
Joel Potterで述べたように、$("span[class='Apple']").hide();
を使用すると、クラス名が1つだけのスパンのみが選択されますApple。複数のクラスが存在する場合(可能性が高い)、そのようなアプローチは機能しません。
単語をクリックすると、例: pearsの場合、クラスpears
を含むnot要素を除外できます。
$('span').show().filter(':not(.pears)').hide();
そして、あなたは完了です;)
特定のクラスまたはその他の属性値を含む要素を除外するには、 属性に単語セレクターが含まれています を使用することをお勧めします。
$("span").filter("[class~='Apple']")
実際、class属性の場合、次のように記述する方がさらに簡単です。
$("span").filter(".Apple") // or:
$("span.Apple")
[これは、ジョエル・ポッターがコメントで書いたものでもあります この回答 。]
そうすれば、以下のすべてに一致することができます。
<span class="Apple">...</span>
<span class="Apple fruit">...</span>
<span class="fruit Apple sweet">...</span>
したがって、要素に1つのクラスしか設定されていないことが100%わからない場合は、~=
演算子を使用してください。