2016-11-20 1 views
2

Я хотел бы создать элемент DOM, изначально связанный с ним данными. а затем создать элемент jQuery, установив (автоматически) эти данные, которые будут доступны через функцию data().Создание собственного элемента dom с данными, которые будут использовать данные jQuery()

var x = document.createElement("div"); 
x. ???? // add the data {a: {x: 4, y:6}} 
x = $(x); 
var obj = x.data("a") 
console.log(a.x); // getting '4' 

это можно сделать - и как?

Обратите внимание, что data-[attrib-name] не будет работать, так как мне нужны сложные данные.

+0

А почему бы вам не просто использовать JQuery для создания элемента – adeneo

+0

он создается в DocumentFragment первой и данных устанавливается там. – yossi

ответ

2

Вы можете использовать $.data() для установки данных на собственном узле DOM в JQuery

var x = document.createElement("div"); 
 

 
$.data(x, 'a', {x: 4, y:6}); 
 

 

 
x = $(x); 
 
var obj = x.data("a") 
 
console.log(obj);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

отличный ответ, спасибо. однако я не могу сохранить ref 'для объектов с ним. любая идея, как это решить? – yossi

+0

@yossi - атрибуты исходных данных ** не может ** хранить объекты вообще, ** только ** строки. С другой стороны, jQuery позволяет хранить сложные объекты, сохраняя их в памяти, в специальном объекте jQuery хранит связанные данные, поэтому он может хранить объекты в '$ .data'. Если вы не храните объекты в '$ .data', у вас есть ** для создания элементов с помощью jQuery. – adeneo

+0

OK. Могу ли я получить доступ (пытаясь найти его в течение последнего часа) для объекта памяти и установить данные «вручную»? – yossi

1

Вы можете установить атрибут data, используя в JavaScript setAttribute() так:

var theDiv = document.createElement("div"); 
theDiv.setAttribute('data-x', '4'); 
theDiv.setAttribute('data-y', '6'); 

доступ к ним:

console.log(theDiv.getAttribute('data-y')); 

А также получить доступ к тем же с JQuery:

$(theDiv).data("x"); 
+0

спасибо, но это не помогает мне со сложными данными и ссылками. – yossi

Смежные вопросы