包含json的data属性中的单引号

dr *_*rry 18 jquery json

化妆品问题:我有一个html元素,其中包含一些嵌入图像的可能尺寸,这些元素存储为:

<div class="inside" data-dimensions='{ "s-x": 213, "s-y": 160, "m-x": ...
Run Code Online (Sandbox Code Playgroud)

我得到了数据维度,并使用jQuery.parseJSON(jQuery.data("维度"))进行解析,并且非常接近jquery的doc.

但是我习惯用双引号封装我的所有html属性:

<div class="inside" data-dimensions="{ 's-x': 213, 's-y': 160, 'm-x': ...
Run Code Online (Sandbox Code Playgroud)

但后来我得到了格式错误的json异常.有没有办法让我能遵守自己强加的"双引用html属性"法律?

Thi*_*ter 20

你可以用&quot;而不是".但引用orgies是可怕的(在HTML中比在PHP中更多)所以最好单引用你的html属性.

顺便说一下,你不需要使用.parseJSON- 如果data-属性开始,jQuery会自动执行{(实际上,它更复杂 - 这是它用于测试它是否应该被解析为JSON的正则表达式:) ^(?:\{.*\}|\[.*\])$.

  • 经过很长一段时间不理解为什么我的`data -`属性中的JSON没有被解析为JSON,我意识到它必须是完美形成的JSON,包括**属性名称**的引号.希望这能节省一些时间.http://api.jquery.com/data/#data-html5 (5认同)

Rus*_*Cam 9

JSON规范规定,钥匙和(串)值用双引号标注.

HTML属性可以用单引号或双引号括起来.

就个人而言,我不打算对抗它,只是去了导致摩擦最小的因素,并且最容易理解在这种情况下单引用HTML属性并在属性值中使用双引号.


Joh*_*ing 9

试试这个,你可以在属性中保持格式良好的JSON:

$.parseJSON($('.inside').data('dimensions').replace(/'/g,"\""))
Run Code Online (Sandbox Code Playgroud)


Edw*_*son 5

使用&quot;代替"&apos;代替'

  • 您不应使用“ 您应该使用&#39; http://stackoverflow.com/questions/2083754/why-shouldnt-apos-be-used-to-escape-single-quotes (5认同)