Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQ] Kopiowanie obiektu this
markonix
post 28.08.2013, 20:34:23
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


  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.

Ten post edytował markonix 28.08.2013, 20:35:37


--------------------
Go to the top of the page
+Quote Post
wookieb
post 29.08.2013, 10:28:26
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 00:08