jQuery .data上下文问题

时间:2013-04-20 22:33:06

标签: javascript jquery arrays object

我尝试使用$ .data附加和检索数据时遇到了一个奇怪的问题。我认为它可能是一个上下文问题,但不知道如何解决这个问题并且不确定到底发生了什么?

我有一组拇指,每个拇指都应该拥有与之相关的数据。当调用脚本时,这会触发所有插件的默认设置,这是正常的事情,然后从每个缩略图的父级中提取所有数据插件设置(&# 39; a')标记并合并。最后,我将完整的合并插件设置分配给缩略图的$ .data,最后为其分配点击事件。

return this.each(function(index){ 
   var $this=$(this), 
       objSRC=$this.parents('a:first'),
       dataSettings=(!objSRC.data("plugin"))?{}:JSON.parse(objSRC.attr('data-plugin')),
       mergedData=$.extend({}, Plugin.settings,dataSettings||{});

    $.data($this, mergedData); 

    // SETUP THUMBNAIL CLICK EVENT  
    $this.on('click',function(e){ 
       Plugin.thumbClick($this); 
       e.stopPropagation(); e.preventDefault();
    });
});

....然后在实际的缩略图点击事件方法中,我遇到了一个问题:

thumbClick:function(obj){
   var objData=$.data(obj), 
       objParent=obj.parents('a:first'),
       GalAttr=obj[0].getAttribute('rel'), 
       imageATTR=this.alt;

   // SETUP GALLERIES IN ARRAY INSIDE DATA - ONCE
   if((typeof(GalAttr)!='undefined' && GalAttr) && !obj[0]['Galleries']){
      var GallerySet=$("[rel='"+GalAttr+"']");
      for(var i=0,l=GallerySet.length; i<l; ++i){ 
          GallerySet[i]['Galleries']=GallerySet; 
      };
   };   
},

在方法中我设置了一些基本变量,然后我使用缩略图的rel属性。 rel属性用于将缩略图分组到库中。因此,点击缩略图我试图

1)从缩略图(obj)中拉出REL属性

2)在页面上找到具有相同rel属性的所有类似缩略图(一次)

3)将返回的集合作为数组保存到缩略图的数据

这样,我只需要根据&#39; rel&#39;来搜索DOM。每个画廊一次。之后,所有内容都将被存储在一个&#39; Galleries&#39;缩略图的$ .data中的数组。一切看起来都很正确并且正在运行,但我遇到了一个问题 - $ .data在传入函数的缩略图(obj)与I&#之间没有正确对齐39;搜索并添加到Galleries数组。

基本上如果我 console.log(obj)和 console.log($(GallerySet [0]))

当点击图库中的第一张图片时,我会得到完全相同的元素。 (两者都是对象)但是,当我尝试从每个数据中提取数据时:

console.log($。data(obj)和 的console.log($。数据($(GallerySet [0]))

他们完全不同。 $ .data(obj)(这是点击并传递给thumbClick方法的缩略图)正确返回数据对象,但另一个返回一个空对象。

有没有人对这个问题有想法或见解?谢谢!

0 个答案:

没有答案