我不是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')
答案 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);