Рассмотрим элемент html с атрибутами данных HTML5, такими как:
<div id="thediv" data-id="somenumber" data-lang="somestring" data-foo="" data-bar="somestring"></div>
То, что я хочу сделать, - это перебрать объект данных и создать переменные типа
var key = value;
Мой код выглядит так:
var itm = $("#thediv");
$.each(itm.data(), function(k,v) {
eval("var " + k + " = '" + v + "';");
});
Первый:
Мне нужно процитировать значения, потому что, если есть пустой, я получаю сообщение об ошибке. Но это нормально, потому что мне нужны только значения как строки, и я могу их повторить, если это необходимо в последующих разделах кода.
Проблема в том, что я не получаю переменные. Скажем, я хочу увидеть результат, который я делаю
console.log("id =" + id);
Я получаю "id undefined"
Проблема с вашим кодом заключается в определении переменных внутри блока jQuery.each
и вы пытаетесь получить к нему доступ за пределами блока.
Поэтому попробуйте сделать переменную глобальной переменной, используя window.yourvariable
в eval.
JS: -
var itm = $("#thediv");
$.each(itm.data(), function (k, v) {
eval("window." + k + " = '" + v + "';");
});
Лично я должен сохранять данные в теге body, используя функцию ".data()"
var itm = $("#thediv");
$.each(itm.data(), function (k, v) {
$( "body" ).data( k, v );
});
Вы можете легко получить данные
alert( $( "body" ).data( "varName" ) );