0

URLタグ(myaddress.html#wheretoscroll)のハッシュの後にあるものに応じて、理論的にはウィンドウの特定の部分までスクロールダウンするjQueryコードがあります。

呼び出されるコードは次のとおりです。

$(document).ready(function() {
    anchor = unescape(self.document.location.hash.substring(1))
    if (anchor) {
        $.scrollTo('#anchor-' + anchor, 500, {offset:-150});
    }
}

問題は、ドキュメントが意図した位置からかなり外れた場所にスクロールすることです。ほぼ右上にアンカーが表示されますが、ドキュメントが下がるにつれて不正確さが増すため、下にスクロールしすぎるように見えます。

でも...

.click関数または.hover関数内で同じコードを実行すると、たとえば次のようになります。

$(document).ready(function() {
    $('body').hover(function() {
        anchor = unescape(self.document.location.hash.substring(1))
        if (anchor) {
            $.scrollTo('#anchor-' + anchor, 500, {offset:-150});
        }
    });
});

本来あるべき正確な位置までスクロールします。これは、.readyの時点でDOMが正しく読み取られないという問題のようなものだと思いますか?これを修正するための提案(または、ページが読み込まれるとすぐにアクションをトリガーするが、.readyを介して直接ではない、より洗練された方法)をいただければ幸いです。

重要な場合は、私が使用している.scrollToプラグインは次の場所にあります:http://flesler.blogspot.com/2007/10/jqueryscrollto.html

乾杯...

4

1 に答える 1

2

代わりにこれを試してください:

$(window).load(function() {
    anchor = unescape(self.document.location.hash.substring(1))
    if (anchor) {
        $.scrollTo('#anchor-' + anchor, 500, {offset:-150});
    }
}

DOMの準備ができた後も、ページの一部が引き続き読み込まれます。$(window).load()画像を含むすべてのコンテンツが読み込まれると発生します。

于 2010-10-28T17:32:28.923 に答える