Это потому, что JSON кодируется с использованием двойных кавычек "
, и вы также заключаете его в двойные кавычки. Проблема в том, что он выдает:
<div data-object="{" name":"one","type":"two"}"></div>
поэтому, когда вы читаете data-object
, его значение равно "{"
.
Попробуйте заключить его в простые кавычки:
var Module = {
div: function() {
var object = {
name: 'one',
type: 'two'
};
var html = "<div data-object='" + JSON.stringify(object) + "'></div>";
var div = $(html).appendTo('body');
// This just returns "{" instead of my object
console.log(div.data('object'));
}
}
$(document).click(function() {
Module.div();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Теперь вывод действителен:
<div data-object='{"name":"one","type":"two"}' ></div>
Вы также можете установить атрибут программно с помощью jQuery: