0

私はなぜこの方法を不思議に思っています:

window.location.hash = JSON.stringify($("body")[0]);

ある種の jquery-id をハッシュに追加します。次のようになります。

foo.htm#{"jQuery18305139440292647334":13}

この「id」とは何ですか (どのように呼ばれますか?)、この id から DOM 要素に戻る方法はありますか? ページのリロード後、この ID は一貫していますか?

4

1 に答える 1

1

あなたの問題は、JSON.stringify()DOM 要素やその他の循環構造 (jQuery オブジェクトなど) をシリアル化するのに実際には適していないことです。

それとは別にJSON.stringify()、ブラウザ固有の機能があります。クロムで同じことをしようとすると、出力が得られないため、明らかにコードをFirefoxでテストしました。

ここで役立つ情報がいくつかあります:循環参照がある場合でも、DOM ノードを JSON にシリアル化する方法は?

なぜ乱数を取得するのかという質問については、私に言わせれば、それはFirefoxのフード内の魔法にすぎません. 要点は、あなたがやろうとしていることはサポートも文書化もされておらず、おそらく常に予期しない結果になるということです。

また、何をしようとしているのかはわかりませんが、URL のハッシュタグから特定の DOM 要素を参照する予定がある場合は、jQuery セレクターを追加することを検討してください。

window.location.hash = encodeURIComponent('body:first');
// wil result in URL like: http://foo.htm#body%3Afirst

ページがハッシュとともにロードされた後、次のように要素を取得できます。

var myjQueryObject = $(window.location.hash);
于 2013-04-19T14:25:20.607 に答える