正如许多其他线程和外部论坛所暗示的那样,我已经尝试将e.preventDefault()(在将e作为参数而不是代码示例中)放置在可以想象的每个地方,但它并不会阻止锚重新加载页。当我单步执行调试器时,它将使用scrollNav为每个div分配click事件,但是当我单击div-link时,它只是重新加载页面,而调试器不会在highlightSelection函数的任何行上停止。我尝试过的另一种方法是在this.click中使用匿名函数并将e.preventDefault()作为第一行,但它什么都不做。
我也不太明白为什么你会像许多其他人所建议的那样放置e.preventDefault()。是不是基本上说回归假?这可能会阻止链接重新加载页面,但是它不会阻止方法中的代码执行吗?
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");
}
})
}
答案 0 :(得分:2)
将initSideNavForSelection
添加到锚点。
或者将this.click(function(e) {
e.preventDefaults();
highlightSelection();
});
功能更改为
ocamlc.opt
要么
答案 1 :(得分:1)
我需要做一些事情来让你的代码运行。你可以在这个小提琴here上找一个链接。
以下是清单:
onclick="Event.stop(event)"
内联属性,因为Event
未定义。this
和$(this)
函数中将initSideNavForSelection()
的使用情况替换为highlightSelection()
。 this
表示DOM对象,$(this)
是this
周围的JQuery包装器。后者将响应JQuery方法,如.click()
,但不响应前者。到目前为止,无论是否有e.preventDefault()
,您的小提琴都没有页面重新加载。
最后,除event.preventDefault()
之外,return false
还调用event.stopProgagation()
以防止事件冒出DOM,然后立即终止回调执行。对event.preventDefault()
的调用不会立即终止函数调用。