2012-07-22 84 views
2

这应该很简单,但我在调试一个油猴脚本时无法弄清楚这一点。是否可以将JQuery对象(如单个元素)转换为JSON? 例如JSON.stringify($("<p />"))我收到了一个循环引用错误。将JQuery对象序列化为JSON - 应该如何工作?

我一直在尝试在这里:http://jsfiddle.net/q7ywV/2/

HTML

<p> whatever </p> 
<p> whatever2 </p> 

JS

try { 
    zoom = JSON.stringify($("p").eq(0)); 
    console.log(zoom); 
} 
catch (e) { 
    console.log(e); 
} 
+0

我也试过了cycle.js库来处理这个通过JSON-Path。使用非本地JSON.stringify,我得到堆栈错误。 – TonyH 2012-07-22 18:54:32

+0

愚蠢的是,我已经主要了解了这一点,问题是DOM元素包含设计的循环引用,如http://stackoverflow.com/a/4277815/657764中提到的我不确定为什么JSON.decycle doesn'尽管如此。也许物体太大了? – TonyH 2012-07-22 18:57:14

回答

0

显然,JSON不是用来表示相同的DOM元素复杂的对象。仅限简单对象。

+2

这不是复杂性,而是循环引用。无论对象是多么复杂,如果它不包含循环引用,应该可以对其进行串联。 – 2012-07-22 19:01:42

+1

我发现Douglas Crockford的cycle.js [link](https://github.com/douglascrockford/JSON-js/)无法处理(或取消)一个DOM元素,这让我感到有趣。需要什么? – TonyH 2012-07-22 23:47:42

1

你不能通过dom并期望成为json。您可以将它存储为数组转换为JSOn,然后使用JSON.stringify

此外,您的方法获取字符串是错误的。下面应该只适用于字符串。您可以将一个或多个html元素存储作为数组进行类似操作,然后使用stringify。 http://jsfiddle.net/q7ywV/13/