2011-07-26 200 views
2

我有一個簡單的JavaScript/jQuery的相關問題之前執行的jQuery事件用戶所在的頁面。即:#是可變的,並且不能是靜態的。打開一個鏈接

使用jQuery,我想執行一個效果(slideUp();,具體)之前新鏈接打開。

這可能嗎?我試過.click().mousedown()。似乎沒有用,因爲當我點擊鏈接時,新頁面會在任何效果發生之前打開。

我聽說過preventDefault(),但我想回避的是離開,因爲這將意味着我必須創建一個單獨的功能來檢測頁#等(太辛苦了〜)

回答

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; 
}); 
0

你只需要推遲頁面的URL的變化:

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