问题:在数据属性中存储多个字的JSON响应会导致问题。它将花括号后的文本忽略为data-attribute中的值。有时它也会忽略空格后的文字。它将剩余的文本视为属性。 当我得到数据操作的值时,它只显示“{”。
示例代码看起来像这样。
var responseString = [{
"key1": "Let's go"
},{
"key2": "new text"
}];
$.each(responseString, function(index, value) {
childDiv += '<div data-action="' + JSON.stringify(value) + '">CONTENT</div>';
})
$(body).append(childDiv);
答案 0 :(得分:2)
因为你的字符串上有'
,所以在连接之前你必须escape
字符串。
如果您使用的是数据,则可以使用unescape
。单击元素以获取data
值。
请参阅以下示例:
$(document).ready(function() {
var responseString = [{
"key1": "Let's go"
}, {
"key2": "new text"
}];
var childDiv = "";
$.each(responseString, function(index, value) {
childDiv += '<div data-action="' + escape(JSON.stringify(value)) + '" >CONTENT</div>';
});
$("body").append(childDiv);
$("body").on('click', 'div', function(event) {
console.log(unescape($(this).data("action")));
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>