I'm trying to update a web app that uses the jQuery.data()
function to store information. The update involves refactoring the interface so that there are separate windows for different types of information rather than using just divs on the same page. Because of the way some plugins work the code that calls them has been moved into different windows to run in the window where they are needed. However, many of the callbacks used by these plugins use .data()
to find stored information, but then code that sets the data stored by .data()
is in the parent window, and it does not seem to attach the data to the DOM, it stores it somewhere attached to the window, so in the child window the callbacks can no longer find the data they are looking for.
Will it work using call(parent, DOMelement.data);
? And is there possibly a tidier way of dealing with this?
Thanks in advance!
Thanks for all the suggestions. This wasn't using cookies because the information doesn't need to be stored beyond the current session. All of the interaction is done via javascript, there are no server requests until you save at the end. The windows that have to communicate are all open at the same time, hence the
call()
suggestion. I ended up solving this using.prop
in place of.data
as the syntax and functionality was almost identical. This directly associates the data with the DOM on the relevant window. $_SESSION only works when each page is requested from the server.So, if you are trying to store information that needs to be accessed by multiple windows simultaneously or without a page refresh you can use the jQuery
.prop()
function to attach data to the DOM..attr()
could also work, but.prop()
allows you to directly access values using . notation. The.data
functions are designed to prevent circular references but they store the information somewhere that means you can't access it without using.data
which stores info separately for each context.