jqueryを使用して小さなWebクライアントアプリケーションを開発しています
セッションの最初のページのアプリには、ajax リクエストをトリガーし、新しいタブ (ページ内) で受信したデータを表示し、コールバックを介してイベント ハンドラーを設定するアプリ メニューのみが含まれます。
ユーザーが複数のタブを開いている場合、フォーカスされていないタブは $(tab).detach() を使用して DOM から切り離され、返されたオブジェクトはタブがフォーカスを取り戻すまで配列に格納されます (オブジェクトはその後DOM に追加します)。
デタッチの魔法は、返されたオブジェクトに、すべての html 要素にバインドされたすべてのイベント ハンドラーが含まれていることです (したがって、追加するときに何も再バインドする必要はありません)。 (ユーザーがサイトの別のページを閲覧しているときに開いたタブを復元するために保存します)。私はhtmlを見つけることができましたが、イベントハンドラは...?
$panels.panel[el]=$("#"+el).detach();
alert(itobj($panels.panel[el])); //-> key: 0 value: [object HTMLDivElement]
alert($panels.panel[el].html()); //-> return the innerhtml
sessionStorage.setItem(el,$.toJSON($panels.panel[el]));
alert(sessionStorage.getItem(el)); //-> {"length":1,"0":{},"context":{"jQuery17204145571568968498":1,"location":{}},"selector":"#panelid"}
では、これらのイベント ハンドラーをセッションで回復するにはどうすればよいでしょうか。コンテキストと関係がありますか?または、シリアライズするためのより良い方法はありますか ( http://code.google.com/p/jquery-json/から toJSON を使用しています)?
どんな助けも非常に感謝していますので、感謝します(すべてのコールバックを追跡してそれらを思い出すという考えは非常に憂鬱です-そしてデタッチの魔法を役に立たなくします)