2012-01-30 134 views
0

只有在第一次加載頁面時,如何通過jQuery cookie($.cookie())庫設置cookie?我現在有一個切換功能,在一個click事件在第一次加載頁面時設置cookie

$('.family-filter').click(function() { 
    if ($.cookie('ff') == null) { 
     $.cookie('ff', 'on', { 
      expires: 1, 
      path: '/' 
     }); 
    } else { 
     $.cookie('ff', null, { 
      path: '/' 
     }); 
    } 
}); 

改變有關的cookie的值,但我需要一個默認值,如果沒有設置了。

也樂於通過PHP來設置它,但我更喜歡這種情況下,通過Javascript

+0

您想在CLICK或LOAD上設置Cookie嗎?您明確地設置點擊cookie。 $ .ready用於網頁加載。 – MatBee 2012-01-30 18:25:13

+0

我不認爲你需要'else if'。檢查它是否爲空,然後創建它應該是足夠的 – 2012-01-30 18:29:09

+0

是的,'如果不需要',我忘了把它拿出來。如果打開,則需要'else'來通過鏈接關閉它,反之亦然。 @MatBee,我試着把它設置在'$ .ready'上,但我最終覆蓋了 – Alex 2012-01-30 18:46:09

回答

1

好吧,我決定實現這種方式:

if ($.cookie('ff') == null) { 
    $.cookie('ff', 'on', { 
     expires: 30, 
     path: '/' 
    }); 
} 

$('.family-filter').click(function() { 
    if ($.cookie('ff') == 'off') { 
     $.cookie('ff', 'on', { 
      expires: 30, 
      path: '/' 
     }); 
    } else { 
     $.cookie('ff', 'off', { 
      path: '/' 
     }); 
    } 
}); 
2

做到在頁面加載,你可以設置此代碼來檢查和設置cookies

<?php 

if (!isset($_COOKIE["ff"])) { 
    // Expire Time is 30 Days 
    $expire = time() + 60 * 60 * 24 * 30; 
    setcookie('ff', 'on', $expire); 
} 
+0

以上的代碼,我可以在codeginiter的home控制器中這樣做...我會嘗試 – Alex 2012-01-30 18:47:09

1

我加入像這樣一個cokkie:

if (document.cookie.indexOf('visited=true') == -1) { 
    var thirtydays = 1000*60*60*24*30; 
    var expires = new Date((new Date()).valueOf() + thirtydays); 
    document.cookie = "visited=true;expires=" + expires.toUTCString(); 
} 

它對我來說很好,如果你需要在網站首次訪問時需要運行的東西,你可以在if子句中添加更多的代碼。

+0

感謝您的信息,但現在我試圖在codeigniter中設置我的家庭控制器中的cookie http://stackoverflow.com/questions/9069521/cant-set-cookie-inside-construct-in-codeigniter – Alex 2012-01-31 12:14:11