2016-04-26 8 views
0

における機能のように、私はすでにこの質問を通じてでpreventDefault()のJavaScript

event.preventDefault() vs. return false

を行っている。しかし、私の解決策を見つけることができませんでした。実際に私は戻って私は<a>をクリックすると、それは私がしたいURLで#を含ん

<a href="#" onclick="goBack()"><img src="images/backbtn.png"></a> 

機能

function goBack(){ 
    window.history.back(); 
} 

のクリック時に正常に動作して前のページに行くためにjavascript関数を使用しています防ぐ。 jqueryでは、要素のデフォルトイベントを停止するのにpreventDefault()を使用しますが、javascriptには同様の機能があります。

javascript:void(0)hrefで使用することができますが、これは問題を解決しますが、他にも多くのインスタンスが存在する可能性があるので、私はJavaScriptの機能について知りたいことがあります。

私はreturn false;を使用してみましたが、それは私がこの

function goBack(){ 
    return false; 
    window.history.back(); 
} 

のように上にこれを書いそして、それが実行する機能を停止して、私は、この

function goBack(){ 
    window.history.back(); 
    return false; 
} 

このreturn false;から効果なしのように書いた場合。私はjQueryがjavascriptから生成されるので、javascriptにいくつかあると確信しています。

ご協力いただければ幸いです。前もって感謝します!

+0

によって行うことができる;'何インスタンス上で? – guradio

+0

あなたは何を防止しようとしていますか?あなたは疑問に思っている部分は大丈夫です。しかしいつあなたはその出来事を防ぐのですか?そうでないときは?イベントはどのように生成されますか? –

答えて

2

event.preventDefault()をJavasccriptとjQuery #を得ることが問題である場合

に、あなたが本当にしたい何らかの理由で両方の作品preventDefault()のみを使用する場合は、eventを関数に渡して関数内で使用する必要があります。event.preventDefault()

<a href="#" onclick="goBack(event)"><img src="images/backbtn.png"></a> 

あなたのJavascriptで、この渡されたイベントを使用し、デフォルトの動作を停止します。

function goBack(event){ 
    event.preventDefault(); 
    window.history.back(); 
} 
+0

'window.history.back()'はここでは必要ありません。 Gauravはそれを使って場所から '#'を削除しますが、 'preventDefault'を使うと'# 'は追加されません。 – szym

+0

@szym私は問題があると信じていますが、彼は前のページに戻ることができますが、それでも前のページのURLで '#'を取得しています。 –

+1

もうひとつ素敵でよく解説されている回答..thanku –

0

preventDefaultジャバスクリプト内に存在していますが、解決策のようなjQueryのに興味がある場合は、互換性の問題の世話をする必要があります。古いブラウザとの互換性の問題を考慮し 別の解決策は、次のとおりです。

function goBack(evt){ 
 
    var e = evt || window.event; 
 
    if (e !== undefined) { 
 
    if (e.preventDefault) { 
 
     e.preventDefault(); 
 
    } else { // IE 
 
     e.returnValue = false; 
 
    } 
 
    } 
 
    window.history.back(); 
 
}
<a href="#" onclick="goBack(event)"><img src="images/backbtn.png"></a>

1

の回答に追加するには、jqueryの中return falseはjqueryのソースコードからevent.preventDefaultevent.stopPropagation()

の両方を行います、jquery.event.dispatch

if (ret !== undefined) { 
    if ((event.result = ret) === false) { 
    event.preventDefault(); 
    event.stopPropagation(); 
    } 
} 

preventDefaultstopPropagationの両方をJavascriptで入手できます。

)IE < 9について、event.stopPropagationevent.cancelBubble = true ことによって行うことができ、あなたが `window.history.backを(停止したいなぜevent.preventDefault

関連する問題