2010-12-14 8 views
3

背景:私は、既存のフォトギャラリープラグインでアップグレードを実行しています。このプラグインでは、中央に大きなイメージが表示され、徐々に小さいイメージが表示されます。.data()によって付加された値を選択する方法はありますか?

だから私の質問はこれです:

$(this).data('index', i).data('prev', i - 1).data('next', i + 1); 

:私はそうのように、画像のインデックス、次の画像のインデックスと、前の画像のインデックスを与える各画像の上にいくつかのデータを設定しています後で、そのインデックスに基づいてイメージを選択できるようにしたいと思います。私は、次のことを試してみたが、それは動作していないよう:

$('[data-index=' + index + ']'); 

.data()と添付データの一部に基づいて要素を選択する方法はありますか?

答えて

4

あなたはこのように、.filter()を使用することができます。それはすべての要素にこのフィルタを実行するよう

$('*').filter(function() { return $.data(this, 'index') == index; }) 

しかし、*は、非常に高価である、と起動するより具体的なセレクタを使用してください。

+0

Sweet!だから '$( 'img')。filter(function(){return $ .data(this、 'index')== index;})'のようなものが動作し、 '*'を使うよりも効率的でなければなりません。 – Ender

+0

ページにたくさんの要素がある場合、はい、ばかげて非効率です。 jQueryは、ページ上のすべての要素を調べて、このようにそれぞれの要素をテストする必要があります。彼が言ったようにセレクタを狭くすると、その大丈夫です。 – simshaun

+0

@Ender - yup、まさに。 *たくさんの要素がある場合は、実際には完全に後方に行く方法がありますが、まずそれを試してください。これははるかに簡単で理解しやすいためです。 –

1

少し別のアプローチ:画像はHTMLで直列であると仮定すると、

は、なぜだけでなく、このような何か?

$('#images img').eq(index)

関連する問題