2010-12-14 45 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)

相关问题