0

私は以前はそうしていhref="#"ましたが、他に方法はありますか?

このような種類のリンクをクリックすると、表示されているページの前にユーザーが移動することがあるため、リンクをクリックしてスクリプトをロードしたいと思います。

4

7 に答える 7

2

を使用し<a href="#">Click</a>続けますが、Javascript/jQuery を使用して、ページがジャンプしないようにします。

$('a').click(function() {
    // do whatever
    return false;
}

return false 行により、ブラウザはリンクをたどることができなくなります。この場合、ページの先頭へのジャンプが停止します。

またはを<a>使用するのではなく、リンクをタグとして保持する必要があります。これは、はるかに意味論的であるためです (つまり、ユーザー/クローラーは、リンクであるため、何かを行う必要があることがわかります)。spandiv

また、インライン Javascript (つまり ) の使用も避ける必要がありonclick="doSomething()"ます。これは、動作を変更したい場合や、Javascript をできるだけ目立たないようにしたい場合に非常に苦痛になるためです。

于 2012-06-07T09:22:25.913 に答える
1

はい、href="#" でスクロールします...

あなたが試すことができます:

<a href="javascript:void(0);" onclick="doIt(); return false;">Woho</a>
于 2012-06-07T09:01:51.363 に答える
0

同じページにイベントが必要なgood markup場合。div or spanしたがって、これを使用してその上で定義する方が良いでしょうclick event

div{
 color:red;
}

JS

$('div').click{function(

)};
于 2012-06-07T08:59:05.120 に答える
0

onclick属性は、任意の要素で使用できます。たとえば、

<span onclick="foo()">Do something</span>

を使用する習慣は、ブラウザーが一般にリンク (技術的な意味で:属性を持つ要素) のみをhref="#"サポートしていなかった初期の時代からの名残りです。それは橋の下の水ですが、特に人々が理由を知らずにそれらを採用した場合、古い習慣はしばしば死ぬことはありません.onclickahref

の代わりにspan、 も使用aできます。href属性がなければ、a要素に特別な意味はありません。

非破壊性の原則により、要素はページの静的な部分ではなく、JavaScript を使用して動的に生成する必要があります (JavaScript が無効になっている場合、関連性のある印象を与えますが、何もしないため)。

于 2012-06-07T09:25:45.653 に答える
0

使わない理由onclick

<a href="#" onclick="doMyThing() return false;" />

SO に関する同様の議論、href-tag-for-javascript-links-or-javascriptvoid0

于 2012-06-07T08:57:05.110 に答える
0
href="javascript:void(0)"

ありがとうヤニロ

于 2012-06-07T09:02:03.603 に答える
0

@Yaniro が href="javascript:void(0)" を使用できるとコメントしたように、その理由は次のとおりです。

JavaScript ボイド 0 の説明

Web ブラウザは、URL として使用されているものを何でも取得してロードしようとします。新しいページを読み込まずに JavaScript Alert ステートメントを使用できる唯一の理由は、alert が null 値を返す関数であるためです。これは、ブラウザーが新しいページを読み込もうとすると、null が表示され、何も読み込まれないことを意味します。

ここで注意すべき重要な点は、値を返す URL として JavaScript ステートメントを使用した場合、ブラウザーはページを読み込もうとすることです。この不要なアクションを防ぐには、そのようなステートメントで void 関数を使用する必要があります。これは常に null を返し、新しいページをロードすることはありません。

抽出元: JavaScript Void 0 説明

于 2012-06-07T09:02:06.320 に答える