.data() HTML5 поперечное окно
Я пытаюсь поместить некоторые данные в тег html дочернего окна. Но это не похоже на работу. Я попытался вставить его с помощью некоторого jquery для этого дочернего окна, и это работает нормально.
Вот код, реализованный в родительском окне для отправки данных в дочернее окно:
$(".something", fullscreen.document).data("data1", "whatever");
Который вернет "undefined" со следующим кодом jQuery в дочернем окне.
console.log($(".something").data("data1"));
Но когда я сохраняю данные с помощью дочернего jQuery-скрипта, он работает отлично:
$(".something").data("data1", "whatever");
Разрешено ли хранить данные в разных окнах в тегах?
2 ответа
JQuery использует собственное хранилище данных для данных, которые вы устанавливаете с .data()
, Каждый экземпляр jQuery (в каждом окне) будет иметь свое собственное отдельное хранилище данных, поэтому вы не получите результаты от одного при вызове из другого.
Если ваши данные - просто строка, то вам, вероятно, будет проще не беспокоиться о хранилищах данных нескольких экземпляров и просто использовать .attr()
сохранить строку как фактический атрибут в объекте DOM. Кроме того, возникает нулевой вопрос о том, где он хранится или как получить к нему доступ, потому что он находится непосредственно на объекте DOM, к которому вы можете легко добраться из любого экземпляра jQuery.
// store data on the object
$(".something", fullscreen.document).attr("data-data1", "whatever");
// read data from within the target window
console.log($(".something").attr("data-data1"));
Обратите внимание на использование HTML5 "data-xxx"
Соглашение об избежании любых конфликтов имен атрибутов со стандартными атрибутами.
JQuery не сохраняет данные с DOMElement
но с в объеме используется экземпляр JQuery. В связи с этим два экземпляра jQuery, независимо от того, находятся ли они в одном и том же документе (например, в двух версиях jQuery) или в разных документах, не будут обмениваться внутренними данными, а также не смогут получить к ним доступ.
Вам всегда нужно будет получать данные с помощью того же jQuery, который использовался для их установки.
Если вы хотите получить доступ к данным в дочернем элементе, для которого данные были такими:
$(".something", fullscreen.document).data("data1", "whatever");
тогда вам нужно будет сделать это так:
parent.window.$(".something", docmuent).data('data1');