1

次のjquery行があります

$('[genre*="'+$(this).attr('id')+'"]').fadeOut('fast');

値にこの要素の id の値が含まれるジャンルの要素をフェードアウトします。

しかし、私が達成したいのは、一致する要素ではなく、残りの要素をフェードアウトすることです。だから、このようなもの:

$('[genre*="'+$(this).attr('id')+'"]:not').fadeOut('fast');

「ない」を置くのに適切な場所はどこですか。

ありがとう

4

2 に答える 2

5

セレクターの前に配置する必要があります

$(':not([genre*="'+$(this).attr('id')+'"])').fadeOut('fast');

詳細とサンプルを入手するには、公式リファレンスを確認してください。not

編集

特にそのセレクターは、そのままでは望ましくない効果を引き起こします。このようなもので修正できます

$('[genre]').filter(':not([genre*="'+$(this).attr('id')+'"])').fadeOut('fast');​​​​​
于 2012-09-27T12:25:25.760 に答える
2

以下はうまくいくはずです。ここにコードを書きましたが、「genre」属性を持つすべての要素を選択し、id 値がこの属性に含まれていないかどうかを確認するという考えです。そうでない場合は、その要素をフェードアウトします。

var id = $(this).attr('id');

$('[genre]').each(function(){
  if(!$(this).attr('genre').search(id))
    $(this).fadeOut('fast');
}); 

編集:ところで、ジャンル属性を持ち、この属性にキーワードを含む値を持つ要素を検索しています。このセレクターで not 演算子を使用すると、文書内のほぼすべての要素になる、それらを除くすべての要素になります。私の知る限り、「この値」を含まない「何らかの」属性と値を持つ」ようなセレクターは jQuery にありません。

于 2012-09-27T12:38:34.357 に答える