2014-01-13 64 views
1

當我想要的功能停止的鏈接,並繼續執行自己的代碼,我這樣做是停止鏈接:最小的代碼量從射擊(在所有瀏覽器)

 // IE 
     if (e.cancelBubble) { 
      e.cancelBubble = true; 
     } 

     // Firefox 
     if (e.stopPropagation) { 
      e.stopPropagation(); 
     } 

     // Others 
     if (e.defaultPrevented) { 
      e.defaultPrevented(); 
     } 

     alert('still executing my function'); 

是所有真必要的,還是我可以用更少的代碼做到這一點?

+0

這些都不會阻止一個鏈接(一個''標籤)被點擊時的「點火」。 – Pointy

+0

你正在瀏覽你的瀏覽器檢查嗎? – Limey

回答

4

只需爲javascript設置功能return false即可。

既然你在你的評論中提到你正在使用jQuery點擊方法,請添加event.preventDefault()

$('#mylink').click(function(event) { 
    event.preventDefault(); 
    //code here 
}) 

jquery Source(感謝BenjaminGreunbaum)用於指出jQuery的標準化活動,從而event.returnValue也已經被處理。

對於javascript,您需要添加一個eventListener

function derp(event) { 
    event.preventDefault(); 
} 

document.getElementById("mylink").addEventListener('click', derp, false); 
+0

我澄清了我的問題,指定我想在阻止鏈接事件後繼續執行。 – Lurk21

+0

你的意思是你想要一段代碼來執行,或者你想提交後的東西? –

+0

On $('#mylink')。click(function(){})我想阻止加載href並執行我自己的代碼塊。 – Lurk21

1

您可以使用return false,因爲它是有效地與調用都e.preventDefaulte.stopPropagation

e.preventDefault()將防止違約事件的發生,e.stopPropagation()會阻止事件冒泡和return false將兩者都做。

1

寫一個簡單的return false;聲明。

這將適用於所有瀏覽器。

+2

我不會downvote,但老實說,我發佈了2分鐘前完全相同的答案。發佈前應閱讀答案以避免重複。 –

+1

-1此答案與3分鐘前的RUJordan's相比有什麼優勢? –

+0

@BhaveshKachhadiya利益的懷疑和所有,但它花了你3分鐘鍵入「寫一個簡單的返回false;聲明。」 :)? –