0

也许这个问题应该命名为:How to animate jQuery-objects through hash

但是...如何将字符串转换为对象?我已经尝试过JSON.parse$.parseJSON但收到以下错误消息:Uncaught SyntaxError: Unexpected token t

我试图完成的事情:我想通过哈希为 jQuery 对象设置动画。

这是我目前的状态(也许有更好的方法?然后告诉我!):

var params = (location.hash || '#').substr(1).split('|');
$.map(params, function (e) {
    var parts = e.split('=');
    $(parts[0]).animate(parts[1]);
    console.log(typeof parts[1]); // 2 `string`
});

使用这个小提琴并将这些哈希附加到 url:

##foo={top:100,left:100}|#bar={top:100,right:100}

(抱歉,markdown 不允许我将这种散列直接附加到链接中)。

4

2 回答 2

0

JSON 比 JavaScript 更严格一些。对于 JSON 评估,参数必须如下所示:

{"top":100,"right":100}

如果你不想这样,你必须求助于好的 ol' eval()

var params = eval('(' + parts + ')');

但是,由于您随后允许通过 URL 执行任意 JS,这可能不是您正在寻找的方式。

于 2013-01-17T17:10:18.183 回答
0

您的 JSON 无效。(将其粘贴到http://jsonlint.com/并自己查看。)

JSON 比 JavaScript 语法更严格,并且需要引用的对象键:

##foo={"top":100,"left":100}|#bar={"top":100,"right":100}

top如果你在,left和,周围加上引号right,那么你可以直接在 JSON 字符串上使用JSON.parseor $.parseJSON

于 2013-01-17T17:10:33.913 回答