使用jquery将数据属性(带有特殊字符)添加到dom元素

Mul*_*lki 3 javascript jquery json

我正在尝试将数据属性添加到html元素.data属性(数据描述)可以包含像apostrope这样的特殊字符.

InsertHtml = InsertHtml + '<tr id="DashboardRow0" data-description=\'' + JSON.stringify(data[0])+ '\'><td>' + </td></tr>';
htmlElement.append(InsertHtml);
Run Code Online (Sandbox Code Playgroud)

访问此数据的代码如下:

var $row = $("#DashboardRow0");
var jsonData = eval('(' + $row.attr('data-description') + ')');
Run Code Online (Sandbox Code Playgroud)

但问题是......如果数据中存在单个撇号,JSON.stringify(data[0])则浏览器会用"有效终止字符串替换它.

是否有任何已知的解决方案将特殊字符的数据属性添加到节点?

rbh*_*hro 6

尝试在stringify之前转义数据

data[0].myProblemField = escape(data[0].myProblemField)
JSON.stringify(data[0])
Run Code Online (Sandbox Code Playgroud)

<edit>
或更好

 for(var prop in data[0]) if(typeof(data[0][prop]) == "string") 
   data[0][prop] = escape(data[0][prop]);
Run Code Online (Sandbox Code Playgroud)

</编辑>

然后

var jsonData = eval('(' + $row.attr('data-description') + ')');
jsonData.myProblemField = unescape(data[0].myProblemField)
Run Code Online (Sandbox Code Playgroud)