2011-10-27 10 views
3

jQuery element.data()が不思議にリセットされています。私は、データがclickイベントで要素に保存されていることを確認しました。十分な、要するに...いくつかのレンダリングなど、レスポンスの取り扱い、フォーム送信、sのデータ・フィールドについて:データ記録は、一連のアクション後にIDを変更し、何が起こるjquery.data()が消える原因は何ですか?

Some simple tests to recreate the problem (with no success) here.

問題を見つけるのが遅いこと。私は保存したデータを持たない$ .cache-objectをチェックしました。コード内の.removeDataはすべて入力フィールドを編集するフォームのsubmit-buttonをターゲットにしています。

$element.removeData('attribute'); 

データがリセットされる原因は何ですか?

jQuery.dataソースhere

+1

フォームの送信によってページがリロードされる(したがって、$ .dataに格納されているすべてのデータが失われる)可能性がありますか? – m90

+1

DOMからその要素を削除して、コードの後ろに挿入していますか? –

+2

firebugとfirequeryをfirefoxにインストールしてみてください。すると、どのデータが要素にあるのかがわかります。コードをステップ実行してデータが破棄されたことを確認してください。 –

答えて

0

htmlテンプレートを変更しましたか?

最近、クリックイベントでデータが消えていたのと同じ問題が発生しました。私は自分のHTMLを再テンプレートし、親ノードにデータを添付していましたが、クリックイベントは子ノードで発生していました。

<div> <!-- The data was attached here --> 
    <div class="clickable"> <!-- click events were firing here --> 


    </div> 
</div> 
+0

この問題はしばらく前ですが、私はそれがおそらく何か似ていたと推測しています。要素を書き直すか、間違ったノードを使用する – Marcus

0

は、万が一このasp.netですか? asp.net ajaxを使用して作成されたajaxコールは非破壊ポストバックですが、クライアントサイドスクリプトコード(javascript)を使用しています。これを試してみてください:

テキストボックスのhtml入力を作成します(非表示です)。そこにもデータ値を保存してください。 ajax呼び出しの後にその入力値をチェックして、入力値がまだ設定されていることを確認してください。

まだ値はありますが、js変数(js変数を含む)がない場合、そのajax呼び出しはフォームの内容を破棄するのではなく、JavaScriptコードを破棄するポストバックを実行しています。

+0

これはネットではなく、フレームワークを使用していないだけで、jQuery、openlayers、JSON APIです。 – Marcus

+0

OLやカスタムマップライブラリから何かが漏れない限り、JSの破壊はありません。しかし、jQueryのデータ操作や、データを持つDOMの部分は行いません。 – Marcus

0

要素がDOMから削除されると、Jqueryデータも削除されます。突然変異オブザーバ内の削除された要素にはまだアクセスできますが、その上のJqueryデータはなくなります。

関連する問題