我尝试使用$ .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方法的缩略图)正确返回数据对象,但另一个返回一个空对象。有没有人对这个问题有想法或见解?谢谢!