返回false我點擊設置像這樣的活動:從jQuery的單擊事件
$('.dialogLink')
.click(function() {
dialog(this);
return false;
});
的都有一個「返回false」
誰能解釋這是什麼一樣,如果它需要的?
返回false我點擊設置像這樣的活動:從jQuery的單擊事件
$('.dialogLink')
.click(function() {
dialog(this);
return false;
});
的都有一個「返回false」
誰能解釋這是什麼一樣,如果它需要的?
當您從事件處理程序返回false
時,它會阻止該事件的默認操作並阻止事件在DOM中冒泡。也就是說,它是這樣做的相當於:
$('.dialogLink')
.click(function (event) {
dialog(this);
event.preventDefault();
event.stopPropagation();
});
如果'.dialogLink'
是<a>
元素然後點擊它的默認操作爲導航到href
。從點擊處理程序返回false
可以防止這種情況發生。
至於是否需要你的情況,我猜測答案是肯定的,因爲你想顯示一個對話框來響應點擊而不是導航。如果您放置點擊處理程序的元素在點擊時沒有默認操作(例如,當您單擊div時通常沒有任何反應),那麼您無需返回false,因爲沒有任何要取消的操作。
如果您想對點擊做出響應,但讓默認導航繼續,則不要返回false。
延伸閱讀:
事件處理程序的返回值決定了默認瀏覽器的行爲是否應該發生爲好。在點擊鏈接的情況下,這將在鏈接之後,但在表單提交處理程序中差異最明顯,如果用戶輸入信息時出現錯誤,您可以取消表單提交。
我不相信這是一個W3C規範。像這樣的所有古老的JavaScript接口都被賦予了暱稱「DOM 0」,並且大部分是未指定的。閱讀舊的Netscape 2文檔可能會有一些運氣。
實現此效果的現代方法是致電event.preventDefault()
,這在DOM 2 Events specification中有詳細說明。
所以正確的方法是:
$('.dialogLink')
.click(function (e) {
dialog(this);
e.preventDefault();
e.stopPropagation(); // Stop bubbling up
});
事件處理程序的返回值決定了默認瀏覽器的行爲是否應該發生爲好。在點擊鏈接的情況下,這將在鏈接之後,但在表單提交處理程序中差異最明顯,如果用戶輸入信息時出現錯誤,您可以取消表單提交。
如果我將這兩個事件編碼到對話框中,它會是一樣的嗎? – Alan2
這兩行不是事件,它們是對'event'對象的方法的調用,您會注意到我已將其作爲參數添加到函數中。 jQuery將該參數設置爲與發生任何事件相關聯的'event'對象。如果您將'event'對象傳遞給'dialog()'函數,那麼它可以調用這些方法,但是我認爲如果直接在顯示它的位置執行,它會更易於維護。話雖如此,我建議你堅持你已經擁有的'return false':它更短。 – nnnnnn
作爲剛剛遇到這個問題並花了一點時間才意識到發生了什麼的人,我認爲調用'return false'不如說要阻止默認並停止傳播。 – aug