0

我不是 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')
4

5 回答 5

4

JQuery数据函数听起来像您需要的。

于 2012-08-31T12:21:08.380 回答
2

试试这个jQuery.data

jQuery.data(document.body, 'foo', 52);
jQuery.data(document.body, 'bar', 'test');
于 2012-08-31T12:22:25.700 回答
2

据我所知,标签内的数据必须命名?有效的句法是

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

你可以稍后阅读它:

$('a').data('array')
于 2012-08-31T12:24:18.650 回答
0

出于简单的目的,我会坚持使用在 HTML5 中完全有效的自定义数据属性。

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

于 2012-08-31T12:27:11.600 回答
0

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

这是一个使用 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);

​</p>

于 2012-08-31T12:29:46.060 回答