2

私は次のようなことをするjQueryセレクターを作成しようとしています:

(.a OR .b OR .c) AND (.x OR .y OR .z)

明らかに、これは機能しません。

$("(.a,.b,.c)(.x,.y,.z)")

Isotopeプラグインのフィルターとして使用できるように、単一のセレクターで必要です。http://isotope.metafizzy.co/docs/filtering.html

これが私が達成したいことの例です:http://isotope.metafizzy.co/demos/combination-filters.html、私だけが赤と青を選択できるようにしたいです。これは可能ですか?

ありがとう!

4

3 に答える 3

4

AND(基本的にデカルト積です)を展開すると、これは次のようになります。

.a.x OR .a.y OR .a.z OR .b.x OR .b.y OR .b.z OR .c.x OR .c.y OR .c.z

ORしたがって、 sをsに置き換えるだけで,、セレクターができます。

$('.a.x, .a.y, .a.z, .b.x, .b.y, .b.z, .c.x, .c.y, .c.z')
于 2012-06-28T04:07:07.087 に答える
1

ド・モルガンの法則:not()を使用して、それを行うことができます(つまり、論理式を拡張する代わりに、二重否定を使用してANDをORに変換します)。

:not(:not(.a, .b, .c), :not(.x, .y, .z))

jsFiddleでの作業例。私が適用している変換は次のとおりです。

a AND b ==> not(not(a AND b))
        ==> not((not a) OR (not b))
于 2012-06-28T04:10:01.753 に答える
0

文字列を返す式を作成できます

デモ:http://jsfiddle.net/sq4xF/

var parents=['a','b','c']
var kids=['c','d','e']

var selector=[];
for ( i=0; i<parents.length; i++){
   var sel='.'+parents[i] ;
    for (j=0; j<kids.length; j++){
       selector.push( sel+"."+kids[j]);  /* add space if kids are desecendents, "AND" was not clear in question*/
    }
}

$("'"+ selector.join()+"'").css('color','red')
于 2012-06-28T04:14:26.867 に答える