2011-12-14 4 views
0

私は自分のHTMLコントロールの状態を維持する必要があります(複数の選択リストがあり、選択したアイテムについての情報を保持する必要があります)。 :JavaScriptは永続化メカニズムとしてカスタム属性を使用します

// put 
$("#element").attr("selectionState", "value"); 

// get 
alert($("#element").attr("selectionState")); 

安全な方法であれば問題は解決しますか?

私が見ることができる唯一のリスクは、同じ名前のカスタム属性を作成する別のスクリプトです。これは管理できるものです。

+0

'.data()'が必要... –

答えて

3

代わりに.data()を使用することをおすすめします。

$('#element').data('selectionState', 'value'); 

DOM要素の「属性」マップではなく、JavaScriptでデータを完全に保持するので、間違いなく安全です。 Sins ".data()"はすべてJavaScriptで、関数やクロージャを含む何かをそこに格納することができます。 (これは ".attr()"でも可能だと思いますが、古いバージョンではDOMとJScriptのストレージ管理が内部的にかなり違うIEではかなり危険です)

名前空間の問題それを管理する可能な方法と同じように、あなたが言うことはもちろんです。

+0

いいです。どのようにカスタム属性が損なわれる可能性がありますか教えてください。 –

+1

私は正確な詳細はわかりませんが、一般的な問題は、古いガーベジコレクターがJScriptランタイムシステムによって割り当てられたメモリをどうすればいいのかわからない古いIEバージョン(多分もっと新しいかもしれません)です。 – Pointy