2011-12-17 60 views
0

我正在构建一个画布,我将在其中移动多个对象和图像,并且我希望将它们保存在本地存储中以便在稍后查看时进行检索。

我认为jQuery的$.storage插件将是理想的,但我不知道如何在其中保存多个对象。 jquery api说它的语法是:

$.Storage.set({"name1":"value1", "name2":"value2", etc})` 

但是这只对一个对象有用。我能够在参数列表中创建多个对象吗?或者,也许存储数组?

+0

哪个'localStorage'插件是它?它是[这一个](http://sites.google.com/site/daveschindler/jquery-html5-storage-plugin)? – 2011-12-17 18:15:16

+0

如果是这样的话,我会看到:“名称和值应该是字符串,一些浏览器可以接受非字符串值,但不是全部。”所以你真的把一个名字保存为一个(字符串)值。 – 2011-12-17 18:17:55

回答

0

您可以创建JSON字符串并进行存储,因此当您检索数据时,可以将它们解析为JSON并从中获取对象。这样你就可以将关于单个元素的所有信息存储在一个对象中。

UPDATE

这里是一个工具,你可以包含到“字符串” JavaScript对象到JSON(它会在浏览器中添加此功能,没有这个的话):https://github.com/douglascrockford/JSON-js

而且你可以嵌套的对象,如果你想:

var myObj = { 
     level_one : { 
      level_two : { 
       key : 'val' 
      }, 
      level_two_too : { 
       level_three : { 
        key : 'val' 
       } 
      } 
     }, 
     level_one_too : { 
      key : 'val' 
     } 
    }, 
    str = JSON.stringify(myObj); 

str变量现在将举行一个字符串是这样的:

{"level_one":{"level_two":{"key":"val"},"level_two_too":{"level_three":{"key":"val"}}},"level_one_too":{"key":"val"}} 

这里是一个演示:http://jsfiddle.net/ycxcV/

UPDATE

所以你$.storage()函数调用将是这样的:

$.Storage.set({"element-one":JSON.stringify($('#element-one')), "element-two":JSON.stringify($('#element-two'))}) 

这里有一个更新的演示,显示创建JSON字符串并将其解析回对象:http://jsfiddle.net/ycxcV/1/ 这将存储jQuery对象a与本地存储中的#element-one#element-two DOM元素相关联。

+0

@ Jasper - 虽然只有一个对象,对吧?我将如何使用多个对象的JSON字符串? – dopatraman 2011-12-17 18:20:04

+1

@codeninja - 看起来你必须将一个对象传递给'.set()'函数,然后该函数对该对象进行操作。 Jasper在说的是,你可能会传递一个JSON格式的字符串作为键/值对中的一个值,并且会通过该名称保存该字符串,然后可以检索该字符串并将其转换回原生JS目的。 – 2011-12-17 18:21:56

+0

@ JaredFarrish - 你介意提供一个你的意思吗?我对JSON并不熟悉,而且我仍然有点迷茫...... – dopatraman 2011-12-17 18:40:47

相关问题