如何在HTML数据属性中存储值为句子的JSON?

时间:2018-02-07 07:22:28

标签: jquery json html5

问题:在数据属性中存储多个字的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);

1 个答案:

答案 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>