2011-03-04 7 views
2

私は、他の項目を切り替えるために.toggleTriggerとrel属性を使用する小さなjQueryを作成しました。jQueryを使って作業するときに、href = "#"を使用する必要がありますか?

私が最初に抱える問題は、ボタン・タグを使用すると、それが開き、すぐに閉じられるということです。アンカータグを使用するとうまく動作します。

第2の問題は、ページを下にスクロールして、アンカータグを押してその下にあるものを切り替えると、href="#"属性のためにページの先頭に戻ってしまうことです。

私はこれらの初心者の問題でなければならないことを知っていますが、私はちょうどそれらを回避する方法を理解できません。

誰かが助けてくれますか?

べき私のhrefの私はtoggleTriggerため<a>タグを使用するように強制href="#divThatWillBeToggled"

アムのようなものをポイント? <button>タグを使用できませんか?

EDIT(私はここやプログラミングに新しいです失礼)

<a href="#" class="toggleTrigger">This is my Toggle Trigger</a> 
<div class="toggle">This is info that is hidden and waiting to be toggled by the trigger</div> 
情報が隠され、W3Cによって定義されているよう href属性はあなたのアンカータグに中に含まれていなければならない
+3

あなたがコードを引用すると、良い答えを得る確率は大幅に向上します。 –

+1

'.toggleTrigger'はプラグインですか?私は何も見つけることができません。それとも別のことを意味しましたか?あなたのコードを投稿してください。 –

答えて

4

のために何を探しているいるようそれ以外の場合クリックイベントを発生させません。あなたがしたい場合href="javascript:"を使用し、代わりに#の

<a href="#">click me</a> 

<script> 
$(document).ready(function() { 
    $("a").click(function(e) { 
     e.preventDefault(); // prevent the default behavior (scrolling to the top) 
     // perform other code 
    }); 
}); 
</script> 
+0

これはjQueryが本当に知っているものなので、私が探しているように思えます...タグのデフォルトの動作を止めるためにこれを使用すると、それは何の関係もないタグでファンキーな動作を引き起こしますか?トグル? – Stefan

+0

これは素晴らしいです、それはボタンタグのためにも機能しました。どうもありがとうございました。 – Stefan

5

を切り替えることを待っています標準。ただし、href="#'を使用する必要はありません。 href="javascript:void(0)"を使用することもできます。

また、標準を気にしない場合は、hrefを省略することもできますが、カーソルは通常のハイパーリンクのようにポインタに変更されません。あなたのアンカーのCSSにユーザcursor:pointerが必要です。

+0

ああ、私はそれを試してみましょう。審美的に言えば、スライドトグルが起こったときに画面が飛び跳ねるのはかなり面倒です。 – Stefan

-1

書き込みアンカータグ

<a href="javascript:" id="myAnchorTagId">my anchor tag <a> 
-1

:スクロール動作の使用でpreventDefaultを停止します。

1

... href = "#"属性のため、ページの先頭に戻ってきます。

あなたはJavaScriptを経由してアンカーをクリックを処理している場合は、イベントハンドラで(リンクをたどっている)デフォルトのアクションをキャンセルするevent.preventDefault();またはreturn false;のいずれかを使用します。

JavaScriptを無効にしているユーザーがページを使用できるように、リンクが本当にどこかにリンクされているようにするのが最も良い方法です(JavaScriptが合理的に必要なウェブアプリケーションではなく、それがあるかどうかをチェックし、見つからない場合は素晴らしいメッセージを表示してください)。したがって、href="#"の代わりに、意味のないところでは、実際にはあなたに意味のある  —を渡してください(ハンドラでevent.preventDefault();またはreturn false;を使用してJavaScriptでオーバーライドしてください)。

2

jQueryを使用する場合、強制的にhref = "#"を使用しますか?

いいえこれはひどい習慣です。 Build on things that work

私が最初に気がついた問題は、ボタンのタグを使用すると開くとすぐに閉じられることです。アンカータグを使用するとうまく動作します。

cancel the default actionに何もしていないので、フォームを送信しているようです。

第二の問題は、私はページをスクロールダウンしている場合にアンカータグを打つことである(サーバ側の代替ではJavaScriptと同じことをしないようにまた、あなたがprogressiveされていないので、音)その下に何かを切り替えると、href = "#"属性のためにページの先頭に戻ります。

URL「#」は、「現在のページの先頭」を意味します。 JSの実行後にリンクを辿らないようにするには、上記のようなデフォルトのアクションを防ぐ必要があります。

はHREF =のようなものに私のhrefポイント

はい "#はdivThatWillBeToggled" 必要があります。 divはデフォルトでCSSで隠されていないはずです(ただし、JSではすぐに非表示にすることができます)。そうすれば、JSが利用できない場合でも表示されたままになります。

私はtoggleTriggerにタグを使用する必要がありますか?私は使用タグを使用できませんか?

HTMLはすべてタグに関するものです。あなたの最後の質問は理にかなっていません。

+0

+1良い答え。あなたの最後の点について:私はあなたの答えの前に数分作った編集を見てください。 ''と '

+0

デフォルトの動作を削除すると、「問題」が修正されたようです。しかし、AJAXに入ることができれば、このデフォルトの動作をボタンタグから削除すると、情報を動的に読み込むことができなくなります。 – Stefan

関連する問題