[英]jQuery click on anchor tag reloads page
正如許多其他線程和外部論壇所建議的那樣,我嘗試將e.preventDefault()(在將e作為參數傳遞時,而不是在代碼示例中傳遞)放置在可以想象的每個位置,但這不會阻止錨點重新加載頁面。 當我單步調試器時,它將為每個div分配scrollNav click事件,但是當我單擊div鏈接時,它只是重新加載頁面,並且調試器不會在highlightSelection函數的任何行上停止。 我嘗試過的另一種方法是在this.click中使用匿名函數,並將e.preventDefault()作為第一行,但是它什么也沒做。
我也不太了解為什么您要放置e.preventDefault(),就像其他許多人建議的那樣。 基本上不是說return false嗎? 這可能會阻止鏈接重新加載頁面,但是會不會阻止方法中的代碼執行?
jQuery(document).ready(function() {
jQuery('.scrollNav').each(initSideNavForSelection);
}); // end ready
function initSideNavForSelection() {
this.click(highlightSelection);
}
function highlightSelection() {
var selectedDataID = this.attr("data-id");
jQuery('.scrollNav').each(function() {
if (this.attr("data-id") === selectedDataID) {
this.addClass("selected");
} else {
this.removeClass("selected");
}
})
}
添加onclick="return false;"
到錨點。 或將initSideNavForSelection
函數更改為
this.click(function(e) {
e.preventDefaults();
highlightSelection();
});
任一個
要使您的代碼運行,我必須做一些事情。 您可以在此處進行鏈接。
這是清單:
onclick="Event.stop(event)"
內聯屬性作為Event
是未定義的。 initSideNavForSelection()
和initSideNavForSelection()
highlightSelection()
函數中,用$(this)
替換this
的用法。 this
代表DOM對象,而$(this)
是圍繞this
的JQuery包裝器。 后者將響應諸如.click()
類的JQuery方法,但不會響應前者。 到目前為止,無論是否e.preventDefault()
,您的小提琴都無法重新加載頁面。
最后,除了event.preventDefault()
, return false
還會調用event.stopProgagation()
以防止事件在立即終止回調執行之前使DOM冒泡。 調用event.preventDefault()
不會立即終止函數調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.