0

独自の css クラスを持つ 2 つの要素に jQuery の動作を適用しようとしています。

このように2つのクラスを選択しています...

$(".product-contain, .page-id-31").find("a:has(img)").fancybox({

ただし、スクリプトは 2 番目のセレクターでのみ機能します。さまざまな方法を試しましたが、それを行う適切な方法が思いつきません。他のセレクターのためだけにコードを複製したくありません。

上記の 2 つのセレクターにスクリプトを適用する正しい方法は何ですか?

前もって感謝します。

4

3 に答える 3

6

each()を使用して、セレクターごとにevery要素を呼び出しますreturned。現在、セレクターによって返されたインデックスfancybox()の要素でのみ呼び出されます。zero

$(".product-contain, .page-id-31").find("a:has(img)").each(function(){
      $(this).fancybox({
})
于 2012-12-22T20:16:50.477 に答える
0

試す

$.each( [".product-contain", ".page-id-31",.....] , function(i, value){ 

     var el = $(value); 
     el.find("a:has(img)").fancybox({options});

});
于 2012-12-22T20:19:28.783 に答える
0

コンマ区切りは、複数のセレクターを適用する正しい方法です。find 関数は、適用先のコンテキストのすべての子孫で一致を試みます。

セレクターは次のように書き換えることができます: '.classA a.classC, .classB a.classC' セレクターが意図と一致する場合、フィルタリングは正しいです。

検索は、コンテキスト要素自体と一致しません。

また、前述のように、適用される関数が最初の結果だけでなく、結果のセット全体に適用されることを確認してください。FancyBox は、セットの最初の要素にのみ適用されます。この場合、.each 関数を適用してセット内のすべての要素をループし、fancyBox を適用できます。

于 2012-12-22T20:21:08.500 に答える