Лучший способ назначить объект JavaScript для HTML-элемента

0

Я получаю объект javascript через ajax. Мне нужно прикрепить этот объект к div, чтобы его можно было восстановить позже, например, при событии клика.

Если бы вместо объекта у меня была переменная, я бы нажал ее в теги html, как это:

'<div variable="'+value+'"></div>';

И я бы восстановил его значение следующим образом:

var value= $(this).attr('variable')

Не могли бы вы предложить мне хороший подход, чтобы сделать это с объектами?

Большое спасибо!

  • 0
    Действительно ли необходимо прикрепить его к HTML-Div? Вы не можете хранить в переменной или использовать localalstorage?
  • 0
    Почему бы вам просто не сохранить его в глобальной переменной на потом? Вы не будете знать, какую переменную получить позже? Связан ли объект json непосредственно с div, к которому вы его подключаете? Это действительно странный подход без подробностей.
Теги:
object

3 ответа

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

Если вы используете JQuery, вы можете использовать функцию хранения данных

См. Документацию по JQuery

//To store value or obj:
$("#myDivId").data("myKey", valueVar);
//Later to load:
var fetchValue = $("#myDivId").data("myKey");
1

Самый простой способ - сделать это:

<div id="myDiv">...</div>

В javascript

var myDiv = document.getElmentById('myDiv');
myDiv._variable = variable;

Вы можете восстановить это позже, если хотите, просто используя одну и ту же переменную myDiv или, опять же, с document.getElementById() или любым другим методом DOM, который возвращает этот элемент.

var variable = myDiv._variable;

Недостатком этого является то, что вы не можете указать на сервере или из разметки, какой объект вы хотите привязать к элементу.

  • 0
    Я думаю, что это лучший подход, если объект json нужно хранить с соответствующим элементом. Имя свойства, которое хранится в JSON, может быть чем-то, что означает объект, так что может быть присоединено более одного объекта, например myDiv.objectA = variable;
  • 0
    Конечно, я бы использовал имя свойства со значением. Я использовал _variable в примере, потому что я не знаю, что именно @ marc-vilalta хочет сохранить.
Показать ещё 1 комментарий
0

Использование механизма шаблонов было бы лучшим подходом, разделив логику с представлением, и таким образом вы сможете анализировать полные свойства объекта в html.

в этом примере я использую механизм шаблонов jQuery & UnderscoreJs.

часть javascript:

 $(document).ready(function(){
     var user = { name:"Ofer", age:"29" }

     var markup = _.template($("#userTemplate").html(), user);
     $('#userContainer').html(markup);
});

html часть (входит в тело)

<div id="userContainer">
</div>

<script id="userTemplate" type="text/template">
<fieldset>
 <legend>User</legend>
 Name: <%= name %><br>
 Age: <%= age %> <br>
 </fieldset>
</script>

Функция _.template($ ("# userTemplate"). Html(), пользователь); может быть вызвана из полной функции обратного вызова ajax, передавая данные из результатов в функцию (пользовательская переменная будет данными)

Ещё вопросы

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