Зацикливание объекта jquery data () и запись значений в переменные с ключом в качестве имени переменной

0

Рассмотрим элемент 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-data

2 ответа

0
Лучший ответ

Проблема с вашим кодом заключается в определении переменных внутри блока jQuery.each и вы пытаетесь получить к нему доступ за пределами блока.

Поэтому попробуйте сделать переменную глобальной переменной, используя window.yourvariable в eval.

JS: -

var itm = $("#thediv");
$.each(itm.data(), function (k, v) {
    eval("window." + k + " = '" + v + "';");
});

JSFiddle

  • 0
    Просто чтобы убедиться, что вы избегаете проблем с выходом из строя: eval ("window." + K + "= v;");
  • 0
    @BernhardKraus Это отвечает на ваш запрос?
Показать ещё 1 комментарий
0

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

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

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

alert( $( "body" ).data( "varName" ) );

Ещё вопросы

Сообщество Overcoder
Наверх
Меню