2010-12-14 85 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

甜!所以然後像'$('img')。filter(function(){return $ .data(this,'index')== index;})'應該可以工作,並且比使用'*'更有效率。 – Ender 2010-12-14 18:15:01

+0

如果頁面上有很多元素,那麼是的,可笑的效率很低。 jQuery必須篩選頁面上的每個元素,並以這種方式測試每一個元素。如果你像他說的那樣縮小選擇器,那就好了。 – simshaun 2010-12-14 18:17:12

+0

@恩德 - y,正好。如果你有很多元素,實際上有一個完全倒退的方法,但首先嚐試 - 因爲它更簡單,更容易理解。 – 2010-12-14 18:24:39

1

略另一種方法:

假設圖像是在HTML一系列的,爲什麼不這樣做?

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

相關問題