4

私の質問はこれに似ていますが、答えのどれも私の問題を解決しません: Use JQuery preventDefault(), but still add the path to URL

ユーザーがフラグメント リンクをクリックしたときに、フラグメントにジャンプするという既定の動作を削除する必要がありますが、フラグメントを URL に追加する必要があります。このコード (リンクから取得) はアニメーションを起動し、フラグメントを URL に追加します。ただし、フラグメントに移動すると、私の場合はサイトが壊れます。

$("#login_link").click(function (e) {
    e.preventDefault();
    $("#login").animate({ 'margin-top': 0 }, 600, 'linear', function(){  window.location.hash =     $(this).attr('href'); });

});
4

2 に答える 2

8

経由でハッシュを更新することによりlocation.href、ブラウザーは自動的にポインターに移動します。e.preventDefault()イベントのデフォルトの動作をキャンセルするだけで、同じイベント リスナー内から呼び出された場合でも、他のハッシュ変更メソッドには影響しません。

history.replaceStateまたはを使用history.pushStateして、ジャンプせずにハッシュを変更できます。

// Replaces the current history entry
history.replaceState(null, '', '#newhash');
于 2012-03-20T17:25:40.270 に答える
0

login_link要素のデフォルト ハンドラーが起動しないようにしていますが、具体的に設定window.location.hashしているため、ナビゲーションが発生します。ハッシュに設定している名前のアンカーが実際にありますか? そうでない場合は、ページ上のアンカーが存在しないときに、アンカーに「ナビゲート」するためにサイトがどのように機能しなくなるかを説明できますか? 通常、これは問題を引き起こしません。

于 2012-03-20T17:26:38.150 に答える