4

H3リンクの後に段落を切り替えるjQueryのこのビットがあります。PC では IE と Chrome、Mac では Safari と Chrome で動作します。両方のプラットフォームの Firefox で、リンクをクリックしても何も起こらないのですか?

<script type="text/javascript">
$(document).ready(function(){
$("#rightcolumn .article .collapse").hide();
$("#rightcolumn h3 a").click(function(){
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue = false; 
};
$(this).parent().next().toggle(400);
});
});
</script> 

event.preventDefault(); を無効にすると、セクションはFirefoxで機能しますが、もちろん、ページが一番上にジャンプしてしまいますが、これは望ましくありません。Firefox で動作させるにはどうすればよいですか?

4

2 に答える 2

16

関数のイベント宣言がありません。また、慣例として、ほとんどの例で変数名として evt を使用しています。

$("#rightcolumn h3 a").click(function(evt)
{
   evt.preventDefault();
   $(this).parent().next().toggle(400);
}

function() に evt を含めることに関する TJ Crowder からのコメント

クリック ハンドラーにパラメーターを宣言する必要があります (イベントは、IE および IE 固有の Web サイトにボーンをスローするブラウザーを除き、グローバルではありません)。また、preventDefault のテストは必要ない (またはしたくない) ことに注意してください。jQuery は、それをネイティブに提供しないブラウザーでそれを提供します。

jQuery イベントの詳細説明

于 2011-05-03T15:50:58.720 に答える
1

Event パラメーターを指定する必要があります。

<script type="text/javascript">
$(document).ready(function(){
$("#rightcolumn .article .collapse").hide();
$("#rightcolumn h3 a").click(function(event){
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue = false; 
};
$(this).parent().next().toggle(400);
});
});
</script>

この質問はすでにここで回答されていますhttps://stackoverflow.com/a/17712808

ドキュメントのハンドラーが、渡されたパラメーターとしてこの eventObject を表示する方法に注意してください: http://api.jquery.com/click/

Event オブジェクトに preventDefault メソッドがあることに注意してください: http://api.jquery.com/category/events/event-object/

于 2013-11-30T11:29:04.770 に答える