执行preventDefault然后执行默认行为

时间:2015-07-02 06:40:10

标签: javascript jquery backbone.js single-page-application

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

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

此锚点位于该页面的弹出窗口中。因此,每当我单击此锚标记时,锚点应关闭弹出窗口并将窗口位置更改为

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

现在,主播正在更改网址(默认情况下为 ),但不会关闭弹出窗口。

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

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

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

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

2 个答案:

答案 0 :(得分:1)

尝试

$('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');
    });
});

答案 1 :(得分:-2)

我不确定这是否适合您,但是一旦我要求将html标记保留为<a href="#">Demo</a>,但我只是想将其作为占位符,并且要求不要更改地址栏中的url。我做了以下

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

我想你可以尝试一下。