2012-08-31 149 views
0

我不使用Javascript/jQuery的的重度使用者,但我开始真正进入创造我自己的用户界面的东西,如画廊浏览器,警报动画,弹出形式等等存储数据以使用jQuery的最佳方式是什么?

但是,什么是最好的存储数据以便在需要时一起拉动的方式?

例如: 随着画廊查看器,很像灯箱,我拉入有rel =查看器锚的href。

<a href="url" rel=viewer" /> 
<a href="url" rel=viewer" /> 

然后,我扩大了这为管理员用户能够删除这些图像,但我需要通过媒体ID来做到这一点。所以我补充说...

<a href="url" rel=viewer" viewerid="123" /> 
<a href="url" rel=viewer" viewerid="456" /> 

我不喜欢创建自己的属性的想法,因为我无疑会忘记我拥有的。但是有可能在一个锚点中存储一个JavaScript对象/数据数组?喜欢的东西...

<a href="url" rel=viewer" data="{'id':'123', 'foo':'bar'}" /> 

然后......

var photos = new Array(); 
$('a[rel=viewer]').each(function(){ 
    photos.push( new Array($(this).attr('data')) ); 
}); 

给我像

photos[0] = array('id' => 123, 'foo' => 'bar') 
photos[1] = array('id' => 456, 'foo' => 'bar') 
+1

正如旁白 - AFAIK自定义属性是无效的HTML;虽然它可能在大多数浏览器上工作,但可能会导致旧浏览器崩溃。您可以使用HTML5中有效的'data-myVar =“someValue”'语法。 – jammypeach

回答

2

,因为我知道里面的标签数据已经被命名为?有效语法是

<a href="url" rel=viewer" data-array="{'id':'123', 'foo':'bar'}" /> 

,你以后喜欢,可以读取它:

$('a').data('array') 
+0

谢谢你的解决方案。我不得不改变引号,但后来工作了... data-array ='{“foo”:“bar”}' –

+0

并且您可以拥有尽可能多的数据名称。像数据ID,数据名称等... –

+0

数据阵列有多可靠? –

2

试试这个jQuery.data

jQuery.data(document.body, 'foo', 52); 
jQuery.data(document.body, 'bar', 'test'); 
0

对于简单的目的,我会用custom data attributes,这是非常有效的HTML5坚持。

如果您需要更深入的方法,您最好从DOM /jQuery.data中分离数据,并在您的应用程序中使用合适的模型层[想想Backbone.js],虽然它意味着一点点艰苦的学习曲线,可能会有时过度杀伤。

0

我发现最好的方法是使用HTML5数据属性和jQuery。

这是一个example使用JSON将对象串联起来,并在您需要数据时将其转回对象。

var obj = 
{ 
    type: "something", 
    id: 3, 
    src: "somesrc"  
} 

var data = JSON.stringify(obj); 
$('a').attr('data-object', data); 

var returned = $('a').attr('data-object'); 
returned = $.parseJSON(returned); 
console.log(returned); 

相关问题