Зацикливание объекта 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 + "';");
});

JSFiddle

Лично я должен сохранить данные в теге "body", используя функцию ".data()"

var itm = $("#thediv");
  $.each(itm.data(), function (k, v) {
  $( "body" ).data( k, v );
});

Вы можете легко получить данные

alert( $( "body" ).data( "varName" ) );
Другие вопросы по тегам