javascript - "return false"在JavaScript事件處理中,為什麼或者"事件preventdefault ( )"和"停止事件流"將不同?

  显示原文与译文双语对照的内容
129 2

當我們處理"單擊事件"時,返回 false 或者調用 event.preventDefault() 會產生差異,在這種情況下,

區別是,將阻止默認事件操作,換句話說,頁面上的頁面重定向。表單提交。等等 和 return false 將停止。

如果單擊事件多次註冊,那麼這意味著

$('#clickme').click(function() { … })

返回 false 將阻止其他處理程序運行?

現在已經使用了 Mac,因此只能使用 Firefox 和 Chrome,但不能使用 IE,而則不使用。and and adding handlers,所有 3個處理程序都運行,而不停止。那麼,真正的區別是什麼,或者者是否存在"停止事件流"不適合的情況?

這與與

如果點擊了元素的" <href="#,使用jquery的( ) 動畫。> </>,函數仍然應該是 return false?

:e.preventDefault(); 和 return false的區別是什麼

时间:原作者:0个回答

110 2

希望這段代碼能給你解釋。

HTML

<div>
<a href="index.html" class="a1">click me</a>
<a href="index.html" class="a2">click me</a>
</div>​

jQuery

$('div').click(function(){
 alert('I am from <div>');
});
$('a.a1').click(function(){
 alert('I am from <a>');
 return false;//this will produce one alert
});
$('a.a2').click(function(e){
 alert('I am from <a>');
 e.preventDefault();//this will produce two alerts
});​

演示工具

或者

$('div').click(function(){
 alert('I am from <div>');
});
$('a').click(function(){
 alert('I am from <a>');
});
$('a.a1').click(function(){
 alert('I am from <a class="a1">');
 return false;
});
$('a.a2').click(function(e){
 alert('I am from <a class="a2">');
 e.preventDefault();
});​

演示 2

原作者:
59 2

編寫 return false 或者 e.preventDefault() 不會阻止其他處理程序運行。

相反,它們將阻止瀏覽器反應的默認,例如導航到鏈接。

在jQuery中,可以編寫 e.stopImmediatePropagation() 插件來防止其他處理程序運行。

原作者:
132 5

return falsepreventDefault() 中,可以防止與事件( 。例如單擊鏈接後跟隨鏈接) 關聯的瀏覽器操作。有一種不同的技術可以實現以下三種不同場景中的每一種:

1.使用 addEventListener() ( 非瀏覽器瀏覽器) 添加的事件處理程序。在本例中,使用 Event 對象的preventDefault() 方法。事件的其他處理程序仍將被調用。

function handleEvent(evt) {
 evt.preventDefault();
}

2.使用 attachEvent() ( IE ) 添加的事件處理程序。在本例中,將 window.eventreturnValue 屬性設置為 true仍將調用事件的其他處理程序,也可能會更改這裡屬性。

function handleEvent() {
 window.event.returnValue = false;
}

使用屬性或者事件處理程序屬性添加的事件處理程序 3 。

<input type="button" value="Do stuff!" onclick="return handleEvent(event)">

或者

button.onclick = handleEvent;

在這種情況下,return false 會做這個工作。通過 addEventListener() 或者 attachEvent() 添加的任何其他事件處理程序仍將被調用。

function handleEvent() {
 return false;
}
原作者:
62 0

事件偵聽器希望取消事件的sideeffects對此事件感興趣。設想一個只允許數字的文本框。因為文本框可以接受任何需要告訴瀏覽器忽略輸入的非數字。通過偵聽關鍵事件並返回 false ( 如果鍵入了錯誤的鍵) 來實現。

原作者:
97 2

我在這裡使用 e.preventDefault() 來擠壓 href 動作,因為我只希望 JavaScript onclick 事件具有控制( 除非沒有檢測到 JS ),這並不完全回答你的問題。在這種情況下停止整個事件鏈不會影響我。

在這個之前,我們已經在事件處理程序中設置了一個條件,而在事件處理程序中,我必須使用一個條件來確定點擊的目標是否是一個標籤,這兩個參數都是 <input type="checkbox">

我的功能是擠壓整個相關事件鏈,因為我已經嘗試傳播和 return false ;,但是我總是會得到 2nd 事件火焰,因為我的標籤元素。

編輯:我不介意了解jquery如何處理我的雙事件情況,如果有任何人注意到這個問題。

原作者:
...