Зацикливание объекта jquery data() и запись значений в переменные с ключом в качестве имени переменной
Рассмотрим элемент 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);
Я получаю "идентификатор не определен"
2 ответа
Проблема с вашим кодом в том, что он определяет переменные внутри jQuery.each
блок, и вы пытаетесь получить доступ к нему за пределами блока.
Поэтому попробуйте сделать переменную глобальной переменной, используя window.yourvariable
в оценке
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" ) );