2011-11-26 18 views
9

Tworzę wtyczkę typu "przeciągnij i upuść" i pomyślałem, że będzie ona trochę wyjątkowa, dodam funkcję plików cookie, aby zapisać położenie przeciągniętych elementów.Dodawanie plików cookie do przeciągania i upuszczania

obecnie używam następujący kod do pobierania i ustawiania ciasteczek:

$.setCookie = function(c_name, value, exdays) { 
    var exdate = new Date(); 
    exdate.setDate(exdate.getDate() + exdays); 
    var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString()); 
    document.cookie = c_name + "=" + c_value; 
} 
$.getCookie = function(c_name) { 
    var i, x, y, ARRcookies = document.cookie.split(";"); 
    for (i = 0; i < ARRcookies.length; i++) { 
     x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("=")); 
     y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1); 
     x = x.replace(/^\s+|\s+$/g, ""); 
     if (x == c_name) { 
      return unescape(y); 
     } 
    } 
} 

Działają one w porządku. Ale czego nie może dostać się do pracy to:

if (o.cookies === true) { 
    $(oj).mouseup(function() { 
     var currentPos = $(oj).position(); 
     $.setCookie('tposition22' + $(oj).index(), currentPos.top, 365); 
     $.setCookie('lposition22' + $(oj).index(), currentPos.left, 365); 
     alert('Cookies Set!') 
    }); 
    $(function() { 
     var savedLeftPosition = $.getCookie('lposition22' + $(oj).index()); 
     var savedTopPosition = $.getCookie('tposition22' + $(oj).index()); 
     $(oj).css({ 
      top: savedTopPosition, 
      left: savedLeftPosition 
     }); 
    }); 
} 

Kod Opis: o.cookies === true jest sprawdzenie, czy pliki cookie są ustawione na true; setCookie działa (sprawdziłem); oj odnosi się do this, selektora.

Problem: Muszę być w stanie uzyskać wartość pliku cookie. Ponieważ obecnie próbuję ustawić wartość położenia przeciągniętego elementu, a następnie go pobrać.

Jak widać w $.setCookie('tposition22' + $(oj).index(), currentPos.top, 365);, currentPos.top jest w miejscu wartości. Aby uzyskać pozycję Y przeciągniętego elementu.

Główne pytanie: Czy istnieje sposób na odzyskanie pliku cookie z value?

+0

'oj' jest prawą selektorową ?? powiedziałeś, że odnosi się to do "prawdziwego"! mylące ... – UnLoCo

+1

Edytowałem. Dzięki za wskazanie tego. – Shawn31313

Odpowiedz

3

Oczywiście możesz pobrać wartość pliku cookie. Podoba mi się nie wymyślanie koła, a skoro już jesteś w jQuery-ville, dlaczego nie skorzystać z wtyczki cookie jQuery? Myślę, że jest nawet "oficjalny". Powinien zapewniać łatwy dostęp do wszystkiego, czego potrzebujesz do interakcji z ciasteczkami (naprawdę, po prostu otrzymujesz i ustawiasz!).

Jeśli chodzi o konkretny kod, skąd pochodzi o (od o.cookies) i dlaczego ma być boolean?

Uwaga boczna: prawie wszystkie kody mogą korzystać z poprawnie nazwanych zmiennych. Pozwalając, by Twój minifier zredukował się do pojedynczej litery, Twój kod będzie bardziej czytelny.

+0

Jest tylko var. Od dla wtyczki. Dzięki za wskazówkę. Ale czy wiesz, jak odzyskać wartość pliku cookie bez oficjalnej wtyczki? – Shawn31313

+1

Z góry mojej głowy, nie. Ale patrzę na oficjalną wtyczkę lub próbkę kogoś innego, w razie potrzeby zmienię i przenieś ją do mojej aplikacji. Zajmie to tyle samo miejsca lub mniej w porównaniu do pisania własnego od zera. Wtyczki lub wyniki wyszukiwania w Internecie nie różnią się od tych, które tutaj odpowiadają na Twoje pytanie za pomocą przykładowego kodu. Przeprowadzasz migrację czyjegoś kodu i korzystasz z niego w dowolny sposób. ;-) –

+0

Dzięki Mam kod do pracy. Po prostu muszę użyć funkcji $ .getCookie() i działało dobrze. Dzięki za pomoc. – Shawn31313

Powiązane problemy