Javascript 为什么可以';你不能对jQuery对象进行字符串化吗?
行Javascript 为什么可以';你不能对jQuery对象进行字符串化吗?,javascript,jquery,json,Javascript,Jquery,Json,行JSON.stringify($(“p”)导致错误: InvalidStateError: Failed to read the 'selectionDirection' property from 'HTMLInputElement': The input element's type ('button') does not support selection. (我正在使用谷歌Chrome34) 为什么? 我还应该如何使$(“p”)更具可移植性,以便将其存储或传递到消息中?HTML元素中
JSON.stringify($(“p”)代码>导致错误:
InvalidStateError: Failed to read the 'selectionDirection' property from 'HTMLInputElement': The input element's type ('button') does not support selection.
(我正在使用谷歌Chrome34)
为什么?
我还应该如何使$(“p”)
更具可移植性,以便将其存储或传递到消息中?HTML元素中涉及大量状态(属性、事件处理程序、与这些相关的代码、内部状态等)。将所有这些序列化为JSON是没有意义的
如果您想获得JSON中元素的某种表示形式,例如,您可以使用.html()
获取表示该元素的html字符串。或者提出一种仅编码标记名、属性和文本的格式。您可能需要手工实现(或者找到一个库——“html到json”可能是一个很好的关键字)为什么要将对象字符串化?目的何在?您应该在json对象中存储所需的数据,并将其字符串化,对吗?为什么要存储DOM元素的jQuery选择集,或者首先使其可移植?这些p
s中是什么?问题的实际上下文是什么?很难看出传递jQuery选择器的结果需要在消息中传递。除非您只需要HTML,否则在这种情况下,$('p').HTML()
就足够了吗?@jonS90使用元素的ID如何?(如果没有,则设置UID)@jonS90if(!$('foo').attr('id')){$('foo').attr('id','UID-')+Math.random();}
如果他需要p
标记,最好在其上调用outerHMTL
来捕获p
标记本身。@izuriel:是的,这也适用于单个元素。我觉得他实际上可能有多个,在这种情况下,将它们添加到一个虚拟元素中,并使用html()
似乎是从中获取html字符串的最简单方法。html本身不允许我重构jQuery对象。我认为表示应该有一个唯一的ID或类(我可以从中重建jQuery对象),另外还有我需要的任何组件,比如.html()
和.css()
东西。这是一个巨大的帮助!