2011-01-24 7 views
0

jQuery .data()とブラウザのCookieの両方が、後で使用するために同じジョブを保存するように見えます。どちらか一方を使用する利点はありますか? .data()はすばやく簡単です。jquery data()vs cookies

答えて

8

jQuery.data()とクッキーがかなり異なっている:

  • クッキーは、要求間で生き残る、jQuery.dataは()のみ缶)(それは
  • jQuery.dataで発行されています文書の寿命を持っています任意のオブジェクトを格納することができますが、テキストとしてシリアライズ可能なオブジェクトはクッキーにテキストとして保存することしかできません(たとえば、DOM要素をクッキーに直接格納することはできません)。
  • jQuery.data()ドメイン、またはドメインのサブパスに接続されています。

一般に、jQuery.data()は、jQueryコードのさまざまな部分で使用されるデータを格納するために使用されます(例:キャッシュされた値など)、およびクッキーは、永続的なユーザ情報(たとえば、セッション情報)を格納するために使用されます。

+0

よく説明されています。ありがとう – Hussein

+0

したがって、グローバル変数を使用するのと比較して、data()を使用する利点は何ですか? – Hussein

+0

異なる名前のソースからjavascriptを混在させても、グローバル名前空間を汚染せず、競合を避けることができます。プラグインを作成するときにも、jQuery.data()の名前空間を指定する必要があります。詳しくは、[これらのガイドライン](http://docs.jquery.com/Plugins/Authoring#Data)を参照してください。 –

2

データは要求間で永続的ではありません。だから、.data()で何かを保存し、ユーザーがリンクをクリックすると、保存されたデータはもう失われます(クッキーとは異なり、永続します)。

1

.data()は - 既にJakubが言っているように - クッキーが要求されている間は永続的ではありません(あなたは期限切れにすることさえできます)。

しかし、別の大きな違いがあります:.data()は要素に設定されており、クッキーはドキュメント全体の単純なキー=>値マッピングであり、要素(またはそれを含むjQueryオブジェクト)を持たないと簡単には検索できません。

ああ、複雑なデータ(配列、オブジェクト)を何らかの形でシリアライズせずにクッキーに保存することはできません(JSONはその仕事を行います)。