私のWebサイトでは、jQueryを使用して要素のイベント、つまりハイパーリンクをフックします。これらのハイパーリンクは現在のページでのみアクションを実行し、どこにも導かれないため、「#」のhref属性を次の場所に入れています。
<a href="#">My Link</a>
ただし、一部のブラウザでは、これによりページが右から上にスクロールしますが、これは明らかに望ましくない動作です。空白のhref値を使用するか、値を含めないようにしましたが、ホバーしてもマウスはハンドカーソルに変わりません。
そこに何を入れればいいですか?
_$('a').click(function (event)
{
event.preventDefault();
//here you can also do all sort of things
});
_
その後、必要なものをすべてhref
に入れると、jQueryがpreventDefault()
メソッドをトリガーし、その場所にリダイレクトされません。
クリックイベントを提供するためだけに存在するが、実際には他のコンテンツにリンクしない「アンカー」は、実際にはbutton要素である必要があります。
次のようにスタイル設定できます。
<button style="border:none; background:transparent; cursor: pointer;">Click me</button>
そしてもちろん、ブラウザがトップにジャンプすることを心配することなく、onclick = "return false;"などの余分なjavascriptを追加することなく、クリックイベントをボタンにアタッチできます。またはevent.preventDefault()。
そこに実際のリンクを実際に配置する必要があります。私はつまらない人のように聞こえたくありませんが、それに入るのはかなり悪い習慣です。 JQueryとAjaxは、常に最後に実装する必要があります。どこにも行かないリンクがある場合、それは正しく行われていません。
私はあなたのボールをつぶすつもりはありません。
なぜ_<a href>
_を使用するのですか?私はこのように解決します:
_<span class='a'>fake link</span>
_
そしてそれをスタイルします:
_.a {text-decoration:underline; cursor:pointer;}
_
JQueryで簡単にアクセスできます。
$(".a").click();
クリックハンドラの最後にfalseを追加します。これにより、ページをリダイレクトしようとするブラウザのデフォルトハンドラが発生しなくなります。
$('a').click(function() {
// do stuff
return false;
});
jqueryを使用すると、「#」が付いているものだけにアクセスすることができます。
$('a[href=#]').click(function(){return false;});
最新のjquery(1.3.x)を使用する場合、ページが変更されたときに再度バインドする必要はありません。
$('a[href=#]').live('click', function(){return false;});
<a href="#" ></a>
の代わりに<a href="javascript:void(0)" ></a>
を使用する必要があります
ここで先に誰もそれを言っていないのはなぜだろう:<a href="#">
がドキュメントの位置を一番上にスクロールするのを防ぐには、代わりに<a href="#/">
を使うだけです。それは単なるHTMLであり、JQueryは必要ありません。 event.preventDefault();
の使用は多すぎる!
私はこれが古いことを知っていますが、すごい、そのような簡単な解決策があります。
「href」を完全に削除し、次のことを行うクラスを追加します。
.no-href { cursor:pointer: }
以上です!
I ほとんどこの問題がありましたそしてそれは非常にdeceivingでした。誰かが私の同じ立場になった場合の答えを提供しています。
これがジャンプで立ち往生している人を助けることを願っています!!