2012-03-29 7 views
2

jQueryを使用して、ローカルアンカーとonclick属性を使用してWebページのコンテンツの表示を切り替えます。コンテンツの上に位置するメニューの部分を「常に」目に見えるようにするために、ページがアンカーにスクロールするのを防ぐのが良いでしょう。 jQueryのevent.preventDefault()はトリックをしたようですが、ブラウザの履歴も無効になっていることに気付きました。また、アンカーは、私に好まれていないURLに表示されません。ローカルリンクがスクロールしないようにしますが、ブラウザの履歴にクリックを保持します

スクロールのようなデフォルトの動作を部分的に無効にする方法はありますか?

The webpage's link.

答えて

1

私は(スクロール抑制のためのpreventDefaultに固執し、native history object's pushState/replaceState methodどちらかに回すお勧めします可能であれば)、および/またはbalupton's history.js polyfillに対応しています。

function anchorClick(e){ 
    e.preventDefault(); 
    //do stuff 
    history.pushState(null/*state object*/, null/*title*/, document.location + $(e.target).attr('id')); 
} 

例:

+0

これは有望に見えます。ありがとうございました。 – DaClown

1

これは一種の醜いですが、それは私が考えることができる最善のことです。

$(document).delegate("a[href^=\\#]", "click", function() { 
    var $body = $("body"), 
     left = $body.scrollLeft(), 
     top = $body.scrollTop(); 
    setTimeout(function() { 
    window.scrollTo(left, top); 
    }, 0); 
}); 
関連する問題