首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery单击锚标记重新加载页面

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

Stack Overflow用户
提问于 2015-08-16 05:15:08
回答 2查看 1.2K关注 0票数 2

正如许多其他线程和外部论坛所显示的,我尝试将e.preventDefault() (同时将e作为参数传递,而不是在代码示例中传递)放置在每个可以想象的位置,但这并不能阻止锚点重新加载页面。当我跨过调试器时,它将使用scrollNav为每个div分配单击事件,但当我单击div-链接时,它只是重新加载页面,调试器不会停止在highlightSelection函数中的任何行。我尝试过的另一种方法是在this.click中使用一个匿名函数,并将e.preventDefault()作为第一行,但是它什么也不做。

我也不太明白为什么要像其他人所建议的那样放置e.preventDefault()。意思不是说返回是假的吗?这可能会阻止链接重新加载页面,但它不会阻止方法中的代码执行吗?

代码语言:javascript
复制
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");
    }
})

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-16 23:06:11

我得做几件事才能让你的密码运行。你可以在这个小提琴这里上做一个链接。

下面是清单:

  1. 在左上角的JQuery框架和扩展部分中添加用作小提琴的框架。
  2. 删除破损的onclick="Event.stop(event)"内联属性,因为Event是未定义的。
  3. 在您的thishighlightSelection()函数中用$(this)替换initSideNavForSelection()的用法。this表示DOM对象,$(this)是围绕this的JQuery包装器。后者将响应JQuery方法,如.click(),但不响应前者。

到目前为止,没有页面重新加载在您的小提琴,无论有没有e.preventDefault()

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

票数 1
EN

Stack Overflow用户

发布于 2015-08-16 05:16:46

onclick="return false;"添加到锚。或将initSideNavForSelection函数更改为

代码语言:javascript
复制
this.click(function(e) {
    e.preventDefaults();
    highlightSelection();
});

这两种方法都有效

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32032064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档