2012-07-23 49 views
0

我正在试用我的第一个lightbox插件,并试图找出如何处理设置导航控件。我知道它必须是一个简单的解决方案,但我完全在意这一点。它支持html内容和图像,并使用标准的rel属性进行图库连接。我的问题是:如何根据rel?从1个图像(或div)导航到另一个。jQuery/JavaScript按属性设置数组

起初,我通过$(this).nextAll('[rel =“ExampleGallery”]')可以工作,但不幸的是,这并不是针对下一个。所以......我可能会完全偏离轨道,但是我现在要做的是如果循环调用插件的对象,检测它们是否具有rel标记,然后如果它们将值推入动态创建的数组中图库名称作为数组名称。然后,只需使用索引数组中通过对象浏览...

HTML

<img src="images/pic1.png" width="230px" height="215px" rel="Gallery1"/> 
<img src="images/pic2.png" width="230px" height="215px" rel="Gallery2"/> 
<img src="images/pic3.png" width="230px" height="215px" rel="Gallery1"/> 

ARRAY

Gallery1     Gallery2 

0 (ref to img tag 1)  0 (ref to img tag 2) 
1 (ref to img tag 3) 

再次,我觉得我这样做不对,和对不起,如果这很好。我将如何去写这个JS?

1-基于相对名称动态创建数组 2-推对象数组中以便日后参考

非常感谢!

+0

所以,你要能够遍历所有具有类似名称的图片?或者每个人单独或??我不太清楚你想如何设置。 – jeschafe 2012-07-23 00:40:41

+0

我想遍历插件(上面3)调用的所有图像,并根据它们的rel属性值创建数组。然后将相应的对象推入正确的数组中。所以结果数组(Gallery 1,Gallery 2)将拥有正确的图库对象。 – Aaron 2012-07-23 00:42:37

+0

您使用哪个特定的lightbox插件? – jeschafe 2012-07-23 00:47:27

回答

2

我认为你应该重新考虑你想用这个数据结构。但是简单地收集图像,这将工作:

var arrays = {}; 
$('img').each(function(){ 
    var arrayName = $(this).attr('rel'); 
    if(arrays.hasOwnProperty(arrayName)) { 
     arrays[arrayName].push(this); 
    } 
    else { 
     arrays[arrayName] = [this]; 
    } 
} 

底: arrays{ Gallery1: [img1, img3], Gallery2: [img2] }

+0

完美!这正是我所寻找的,谢谢:) – Aaron 2012-07-23 00:53:03