Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQ] Kopiowanie obiektu this
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
markonix
  1. $('img').click(function()
  2. {
  3. $(this).addClass('selected');
  4. var this_copy = $(this);
  5.  
  6. $.ajax({
  7.  
  8. success : function( item ) {
  9. item.this_copy = this_copy; // <- TUTAJ chce przypisać "this" do atrybutu obiektu
  10. history.pushState(item, null, 'url' + item.item_url);
  11. }
  12. });
  13. });
  14.  
  15. window.addEventListener('popstate', function(event) {
  16.  
  17. // tutaj chciałbym z tego this skorzystać np.
  18. // event.state.this_copy.hide();
  19. // albo inaczej
  20.  
  21. refreshContent(event.state);
  22. });

Uproszczony kod.

W momencie sukcesu ajaxa chciałbym do obiektu item (zawiera atrybuty przedmiotu) dołożyć jeszcze referencje do obiektu this ponieważ w momencie przycisku cofnij w przeglądarce potrzebuje wiedzieć który obrazek był kliknięty. Niestety przy każdej próbie przypisania this_copy jako atrybut obiektu otrzymuje błędy typu:
Uncaught DataCloneError: An object could not be cloned.
wookieb
https://developer.mozilla.org/en-US/docs/We...e().C2.A0method
Cytat
The state object can be anything that can be serialized. Because Firefox saves state objects to the user's disk so they can be restored after the user restarts her browser, we impose a size limit of 640k characters on the serialized representation of a state object. If you pass a state object whose serialized representation is larger than this to pushState(), the method will throw an exception. If you need more space than this, you're encouraged to use sessionStorage and/or localStorage.


Obiektów DOM nie można serializować. Jedyne co zatem możesz przechować w obiekcie state to jakiś unikalny identyfikator obrazka (który sam będzie tworzył i np zapisywał w atrybucie data-img-id) albo SRC obrazka. Na podstawie każdej z tych danych jesteś w stanie uzyskać dostęp do elementu DOM.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.