2011-11-26 75 views
9

我創建了一個拖放插件,我想讓它有點獨特,我會添加一個cookie功能來保存拖動元素的位置。我目前使用的得到下面的代碼和添加cookie以拖放

設置cookies:

$.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); 
     } 
    } 
} 

這些做工精細。但我不能去工作是這樣的:

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 
     }); 
    }); 
} 

代碼說明:o.cookies === true是檢查cookies是否被設置爲true; setCookie的作品(我檢查); oj指的是this,選擇器。

問題:我需要能夠獲取cookie的值。因爲,即時通訊正在試圖將該值作爲拖動元素的位置,然後檢索它。

正如您在$.setCookie('tposition22' + $(oj).index(), currentPos.top, 365);中看到的,currentPos.top在價值點中。獲取拖動元素的Y位置。

主要問題:有沒有辦法檢索cookie的value

+0

'oj'是一個選擇器嗎?你說這是指'真實'!令人困惑... – UnLoCo

+1

我編輯它。感謝您指出了這一點。 – Shawn31313

回答

3

確定您可以檢索cookie的值。不過,我不想重複發明,因爲您已經在jQuery-ville中,爲什麼不使用jQuery cookie插件?我認爲甚至有一個「官方」的。應該提供簡單訪問所有與Cookie交互所需的內容(實際上,只需獲取並設置一個!)。

關於您的具體代碼,o(來自o.cookies)來自哪裏,爲什麼它會是一個布爾值?

附註:幾乎所有的代碼都可以從命名正確的變量中受益。讓您的縮小器縮減爲單個字母將使您的代碼更具可讀性。

+0

是隻是一個變種。從插件。謝謝你的提示。但是,您是否知道如何在沒有官方插件的情況下檢索cookie的值 – Shawn31313

+1

關閉我的頭頂,沒有。但我會看官方插件或其他人的樣本,如果需要修改並將其移入我的應用程序。與從頭開始編寫自己的文章相比,這將佔用相同的空間或更少的空間。網頁搜索的插件或結果與使用代碼示例回答您的問題的人沒有什麼不同。您正在遷移其他人的代碼並充分利用它。 ;-) –

+0

謝謝,我得到的代碼工作。我只需要使用$ .getCookie()函數,它工作正常。謝謝您的幫助。 – Shawn31313