jQuery单击锚标记重新加载页面

时间:2015-08-16 05:15:09

标签: javascript jquery

正如许多其他线程和外部论坛所暗示的那样,我已经尝试将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");
    }
})

}

2 个答案:

答案 0 :(得分:2)

initSideNavForSelection添加到锚点。 或者将this.click(function(e) { e.preventDefaults(); highlightSelection(); }); 功能更改为

ocamlc.opt

要么

答案 1 :(得分:1)

我需要做一些事情来让你的代码运行。你可以在这个小提琴here上找一个链接。

以下是清单:

  1. 框架和&成员之下添加JQuery作为您的小提琴使用的框架。左上角的扩展程序部分。
  2. 删除已损坏的onclick="Event.stop(event)"内联属性,因为Event未定义。
  3. this$(this)函数中将initSideNavForSelection()的使用情况替换为highlightSelection()this表示DOM对象,$(this)this周围的JQuery包装器。后者将响应JQuery方法,如.click(),但不响应前者。
  4. 到目前为止,无论是否有e.preventDefault(),您的小提琴都没有页面重新加载。

    最后,除event.preventDefault()之外,return false还调用event.stopProgagation()以防止事件冒出DOM,然后立即终止回调执行。对event.preventDefault()的调用不会立即终止函数调用。