J'essaie ces HTML
<div data-params="{a: 1, b: '2'}" id="TEST1"></div>
<div data-params='{"a": 1, "b": "2"}' id="TEST2"></div>
Ensuite, j'utilise la méthode data() dans le jQuery
$('#TEST1').data('params'); //return a string
$('#TEST2').data('params'); //return a object
Mais TEST1 ce n'est pas un objet de retour, mais une chaîne de caractères, il ne peut que retourner l'objet TEST2. Mais je veux obtenir un objet par TEST1, comment faire ?
\=============
Enfin, je choisis d'écrire une fonction pour réaliser leurs propres besoins
$.fn.data2 = function(key, value)
{
if (value === undefined)
{
var data = $(this).data(key);
if (typeof(data) === 'string')
{
var _data = data.replace(/^[\s\r\n]*/g, '').replace(/[\s\r\n]*$/g, '');
if (_data.match(/\{.*\}/) || _data.match(/\[.*\]/)) {
try {
_data = (new Function( 'return ' + data ))();
if (typeof(_data) == 'object') {
$(this).data(key, _data);
data = _data;
}
} catch(ex) {}
}
}
return data;
}
return $(this).data(key, value);
};