执行 preventDefault 然后执行默认行为

Do preventDefault and then do default behavior

我在单页应用程序项目中有一个要求,当我根据提供的 href 属性单击锚标记时,我需要更改页面的部分。像这样:

<a class="page-click" href="#showPeople/1">Open</a>

该锚位于该页面的弹出窗口中。所以,每当我点击这个锚标签时,锚应该关闭弹出窗口并将 window 位置更改为

http://www.example.com/#showPeople/1

现在,锚点正在更改 url(默认情况下)但不会关闭弹出窗口。

当我研究时发现对于锚点,我应该使用 e.preventDefault() 来删除默认行为。但就我而言,我需要默认行为和自定义行为(关闭弹出窗口)。

我发现这个 link 有类似的要求,但问题是我正在动态附加事件。

$(document).on('click', '.page-click', function (e) {
     // e.preventDefault();
     // code here
});

即使我以某种方式成功地 unbind 来自该特定点击锚点的事件,锚点也不会关闭弹出窗口,当用户再次打开弹出窗口时(自注册事件以来已被删除).

我不确定这是否适合您,但有一次我要求将 html 标记保留为 <a href="#">Demo</a>,但我只是想将其作为占位符,而要求不是地址 bar.I 中的更改 url 遵循了

$('a').click(function() {
    // below line prevents the 'href' from followed.
    return false;
});

我想你可以试试这个。

尝试

$('button').click(function () {
    $('body').toggleClass('active');
});
$(document).on('click', 'a.page-click', function (e) {
    e.preventDefault();
    var $this = $(this);
    $('.popup').hide('fast', function() { 
        window.location.href = "http://example.com/" + $this.attr('href');
    });
});