2010-09-09 51 views
0

嘿夥計。我正在設置一個頁面,如果你點擊一個鏈接,這個類將會改變。更進一步,這將不得不存儲在一個cookie中。每個A標籤都有一個唯一的ID。jQuery - 點擊更改類並通過cookie記住

例如,下面是我的榜樣鏈接:

<a href="#" id="unique1" class="up">Link text</a> 

當用戶點擊該鏈接,然後將需要的類是「向下」改變一個cookie將不得不被保存一週,記憶這個點擊。以後任何對該頁面的訪問都必須引用cookie,並且如果之前點擊了該鏈接,則相應地設置該類。

我對JavaScript和jQuery的知識很少..這只是我的頭腦之上。有關如何進行這項工作的任何建議?

回答

0

確定您可以將該類更改爲關閉點擊。

$(".up").click(function(evt){ $(event.target).removeClass("up").addClass("down"); }); 

Cookie處理JS? Read up a bit就此。您基本上想要將唯一ID設置爲cookie中的數組/列表。然後在頁面加載執行此操作。

// list = ['#unique1', '#unique2' ... '#unique-n']; 
for(var id in list) 
{ 
    $(id).removeClass("up").addClass("down"); 
} 
+0

讓我們的班級在點擊上發生變化是我最後的一個可行的部分。我真的不放棄如何在cookie中設置數組並將其與上面的jquery進行比較。 – 2010-09-09 16:20:34

+0

@Robert:我指出你的鏈接非常好。你幾乎可以逐字使用這個腳本來做到這一點。 – 2010-09-09 16:28:33

1

我會用這個插件來實現這一點:

http://code.google.com/p/cookies/

的代碼可能是這樣的:

// set default options 
    // expires date 
    var $todayDate = new Date(); 
    var $expireDate = ($todayDate.getDate() + 7) + '/' + $todayDate.getMonth() + '/' + $todayDate.getFullYear(); 

     $.cookies.setOptions({ 
      expiresAt: $expireDate; 
      }); 


    // click functionality 
     $('#unique1').click(function(){ 

      var $this = $(this); 

      $this.removeClass('up').addClass('down'); 

      var $thisClass = $this.attr("class"); 

      $.cookies.set('ckClass', $thisClass); 

      return false; 

     }); 

檢查Cookie值,並確保類是目前使用類似於:

var $ckVal = $.cookies.get('ckClass'); 
    if ($ckVal) { 
     if ($ckVal == 'up') { 
      $('#unique1').attr('class', '').addClass('up'); 
     } else { 
      $('#unique1').attr('class', '').addClass('down');} 
    } 
+0

如果您希望在每次點擊時更新到期日期,那麼該日期的代碼將不得不移到點擊方法中,並且將有效日期添加到其中一個選項中。 – RyanP13 2010-09-09 16:55:10

+0

行上似乎有語法錯誤:expiresAt:$ expireDate; 雖然...... Firebug不停地對我發出警告,但我無法完全明白會發生什麼情況。 – 2010-09-09 19:55:19

+0

在此代碼之前是否已下載並鏈接到cookie插件? – RyanP13 2010-09-09 22:24:36