存储数据以与jquery一起使用的最佳方法是什么?

时间:2012-08-31 12:18:58

标签: javascript jquery anchor

我不是Javascript / jQuery的重度用户,但我已经开始真正开始创建自己的UI内容,例如图库查看器,警报动画,弹出窗体等......

但是,在需要时存储数据的最佳方法是什么?

例如: 使用图库查看器,就像Lightbox一样,我拉入了具有rel = viewer的锚点的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')

5 个答案:

答案 0 :(得分:4)

JQuery data function听起来就像你需要的那样。

答案 1 :(得分:2)

试试这个jQuery.data

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

答案 2 :(得分:2)

因为我知道标签内的数据必须被命名?有效的句法是

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

你可以稍后阅读:

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

答案 3 :(得分:0)

出于简单的目的,我坚持使用custom data attributes,这在HTML5中完全有效。

如果你需要更深入的方法,你最好从DOM /jQuery.data中分离数据,并在你的应用程序中使用适当的模型层[想想Backbone.js],尽管它意味着一点点困难的学习曲线并且有时可能有点过分。

答案 4 :(得分: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);