当设置了preload选项时,我将响应数据附加到jquery插件的目标。除了我设置的数据无法访问外,这一切看起来都很有魅力。当我记录$(elm).data();
时,我可以看到该对象已返回,并将相应的数据集返回到相应的键。但是当我尝试console.log($(elm).data('key'));
时,我得到了不确定。我尝试var elmData = $(elm).data(); console.dir(elmData.key);
时也未定义。所以我将对象记录在一行上,在控制台中看到它,尝试访问我刚刚确认存在的属性并获取undefined
。
这是我的功能:
this.preloadData = function(folders)
{
var getString;
for(var folder in folders ){
getString = 'folder='+folders[folder]+'&uri='+uri+'&thumbSide='+options.thumbSide;
$.get(options.handler, getString,
function(response, serverStat, xhr)
{
$self.data(folder, response);
});
}//for
var $selfData = $self.data();
console.log($selfData);//Object{ editorial : "data", testingdata : 'some meaningless words'}
console.log($self.data());//Object{ editorial : "data", testingdata : 'some meaningless words'}
console.log($self.data.editorial);//undefined
console.dir($self.data('editorial'));//undefined
console.log($selfData['editorial']);//undefined
console.log($selfData.editorial);//undefined
$self.data('testingdata', 'some meaningless words');
console.log($self.data());//Object{ editorial : "data", testingdata : 'some meaningless words'}
console.log($self.data('testingdata'));//'some meaningless words'
}
我知道命名空间太简单了,我只是想尽可能多地减少因素来尝试并理解为什么这不起作用。我正在使用chrome进行开发,但我也在firefox中尝试过它并获得相同的效果。
----------------------------- EDIT ----------------- -------------------------
我明白现在的问题是什么。控制台反映了对象的所有更改,无论它们是在记录对象时是否生成。因此,当我记录该对象时,该属性尚不存在,因为响应尚未从服务器返回,但是日志仍然将该属性显示为已存在,因为在脚本执行的某个稍后点它存在DID。由于原始值未以相同方式记录,因此记录属性的调用显示为undefined
,因为它未定义。如果我在几秒钟后引用该属性,请说明它是一个单击事件(这是我打算如何工作)。在我实际实现它之前,我真的很想调试这个函数。
答案 0 :(得分:0)
$self.data['editorial']
答案 1 :(得分:0)
试
console.log($self.data.editorial);