HREFが実際にリンクを開かないようにして、スクリプトを実行しようとしています。スクリプト部分は機能しましたが、Firefoxはこれを無視するようです。
$("#permalink a").click(function(id){
$("#newPost").fadeToggle;
event.preventDefault();
var id = this.getAttribute('href');
$("#newPostContent").load(id);
$("#newPost").show("fast");
});
デフォルトを防ぐためのクロスブラウザスクリプトを誰かが提案できますか?
これに対する標準的な解決策は、click()
ハンドラーから_return false
_を実行することです。 _return false
_は、イベントでpreventDefault()
およびstopPropagation()
を呼び出すのと同じです。 preventDefault()
はこのタスクにも十分なので、それまたは_return false
_のいずれかが機能します。
問題は、構文エラーと誤った名前のパラメーターのようです。そうですか:
fadeToggle
には括弧がありません。id
と呼ばれますが、event.preventDefault()
を呼び出します。そしてload()
を合理的な方法で連鎖させたいと思うでしょう。したがって、これは機能するはずです。
_$("#permalink a").click(function(event) {
$("#newPost").fadeToggle();
var id = this.getAttribute('href');
$("#newPostContent").load(id);
$("#newPost").show("fast");
return false;
});
_
この場合、_return false
_をevent.preventDefault()
に自由に置き換えることができますが、伝播するclick()
イベントは、他のイベントハンドラーによっては、他の問題を引き起こす可能性があります。
これは常に機能します。Firefoxには「イベントハンドラ」が必要です。Chromeは必要ありません。これはすべてのブラウザで機能します。
$('#id_obj').click(function(event) {
event.preventDefault(event);
}
$("#permalink a").click(function(id){
する必要があります
$("#permalink a").click(function(event){
その後
var id=event.target;
作業中のオブジェクトが表示され、event.preventDefault()はデフォルトのアクションを停止します。
通常、私はfalseを返します。私自身ですが、これは両方ともデフォルトのアクションを防ぎますandイベントの伝播を停止します。これは、他のイベントハンドラーでは予期していなかった効果をもたらす可能性があります。