在打开链接之前执行jQuery事件

时间:2011-07-26 06:07:08

标签: javascript jquery html

我有一个简单的javascript / jQuery相关问题:

我的tumblr博客中有以下标记:

<a href="/page/#" class="pagination">NEXT</a>

上面的#根据用户所在的页面而变化。即:#是可变的,不能是静态的。

使用jQuery,我想在新链接打开之前执行效果(slideUp();,具体而言)

这可能吗?

我尝试了.click().mousedown()。似乎不起作用,因为当我点击链接时,新页面会在任何效果发生之前打开。

我听说过preventDefault(),但我想回避这一点,因为这意味着我必须创建一个单独的函数来检测页面#等等(太多的工作〜)

2 个答案:

答案 0 :(得分:8)

我建议不要这样做。只需让用户更改页面。

但是,如果您真的想要,您需要做的确是preventDefault(明确地,或通过从您的处理程序返回false),执行slideUp,然后在slideUp完成功能,触发URL的更改。

像这样:

$("a.pagination").click(function() {
    // Grab the link's href
    var href = this.href;

    // Slide up the content you want to slide up
    $("some_selector_here").slideUp(function() {
        // Slide is finished, navigate
        location.href = href;
    });

    // Prevent the default action of the link
    return false;
});

答案 1 :(得分:0)

您只需要推迟更改网页的网址:

$('.pagination').click(function(){
    var link = this;
    $('.some-other-element').slideUp(500, function(){
        location.href = this.getAttribute('href');
    });
    return false;
});