2011-06-22 9 views
1

可能性の重複:
Stop default hashtag behavior with 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; 

}); 
+0

@Michael Irigoyenに影響を与えることから#を防ぐために$(window).scrollTop(0);を使用してみてくださいクリックしますリンクしても問題は解決しますが、e.preventdefault();に注意してください。ちょうど追加されました。 – Xavier

答えて

7

リンク上で使用e.preventDefault();を使用してみてください

は、私はすでにへの回答をした私のコードではfalseを返す必要がありページ

+0

これはまさに私がそれを必要としたこともありました。ありがとうNeal! – Xavier

0

return false;をクリックハンドラの最後のステートメントとして使用できます。それを使用するかevent.preventDefault()event.stopPropagation()return falseは両方とも同じです)、その要素のデフォルトの動作は無効になりますは、イベントがDOMをバブリングするのを防ぎます)。

参考文献:

5

あなたはこの

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

ため e.preventDefault()を使用することができます

または使用:

return false; 

両方preventDefault()stopPropagation()

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

EDIT

は何ができるかしたいと思いませんありません。そのURLに行かなくてもページのURLを変更できるのはセキュリティが悪いことです。

たとえば、URLを銀行のURLに変更して、ユーザーが自分のページが銀行を表すと考えるようにすることができます。

のみハッシュを追加するときに試し以下を与えることができますので、多分それは動作しますが(それをテストしていない、非常にうまく動作しない場合があります):

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

EDIT2

私はちょうど私を知っています

Is there a way to change the browser's address bar without refreshing the page?

再びません。しかし、私はちょうどあなたがやりたいHTML5を使用して、ここでSO上でこの記事につまずいた、それが動作しないことを言いましたテスト:)

+0

私のコードはすでに戻り値を持っていますが、そうでなければジャンプするようです。 – Xavier

+0

@OP:私の編集した答えを参照 – PeeHaa

+0

これは役に立ちますが、私はすべてのものを再構築するつもりはないので、ニールズの答えは自分のニーズに適していると判明しました。 – Xavier

関連する問題