1

重複の可能性:
jquery でデフォルトのハッシュタグ動作を停止する

.load() を使用して DIV をページにロードするリンクにいくつかの jquery コードがあります。また、ページネーション/ブックマークの目的で URL にハッシュタグを追加します。私がしたいのは、リンクがクリックされたときにページが div にジャンプしないようにすることです。

$('#jqNav li a').click(function(){

    if($(this).parent().is(".nav1")){ $('.landing .main .nav ul').css({ "background-position" : "0 -50px" });} 
    else if($(this).parent().is(".nav2")) {    $('.landing .main .nav ul').css({ "background-position" : "0 -100px" });}
    else if($(this).parent().is(".nav3")) {    $('.landing .main .nav ul').css({ "background-position" : "0 -150px" });}
    else if($(this).parent().is(".nav4")) {    $('.landing .main .nav ul').css({ "background-position" : "0 -200px" });};


    stopAnim = true;
    $page = $(this).attr('href');
    var $hashTag = $(this).attr('name');
    window.location = "#" + $hashTag;
    loadData();
    e.preventdefault();
    return false;

});
4

3 に答える 3

7

e.preventDefault();リンククリックで使用してみる

ページへの影響$(window).scrollTop(0);を防ぐために使用してみてください#

于 2011-06-22T19:40:35.713 に答える
5

e.preventDefault()これに使用できます

http://api.jquery.com/event.preventDefault/

または使用:

return false;

どちらが両方preventDefault()を行いますstopPropagation()

http://api.jquery.com/event.stopPropagation/

編集

やりたいことができると思わないでください。その URL に移動せずにページの URL を変更できるのは、セキュリティ上よくありません。

たとえば、URL を銀行の URL に変更して、ページが銀行を表しているとユーザーに思わせることができます。

ハッシュを追加するだけで機能する可能性があるため、次のことを試してみてください(テストしていないため、うまく機能しない可能性があります)。

window.location.hash = $hashTag;
return false;

EDIT2

うまくいかないと言ったのは知っていますが、HTML5を使用して必要なことを行うSOに関するこの投稿に出くわしました:

ページを更新せずにブラウザのアドレス バーを変更する方法はありますか?

再びテストされていません:)

于 2011-06-22T19:40:32.453 に答える
0

return false;クリックハンドラーの最後のステートメントとして使用できます。それまたは両方を使用しevent.preventDefault()event.stopPropagation()(return falseは両方を一緒に使用して、その要素のデフォルトの動作を防ぎ、イベントが DOM を介してバブルアップするのを防ぎます)。

参考文献:

于 2011-06-22T19:40:20.660 に答える