我有一个简单的javascript / jQuery相关问题:
我的tumblr博客中有以下标记:
<a href="/page/#" class="pagination">NEXT</a>
上面的#根据用户所在的页面而变化。即:#是可变的,不能是静态的。
使用jQuery,我想在新链接打开之前执行效果(slideUp();
,具体而言)。
这可能吗?
我尝试了.click()
和.mousedown()
。似乎不起作用,因为当我点击链接时,新页面会在任何效果发生之前打开。
我听说过preventDefault()
,但我想回避这一点,因为这意味着我必须创建一个单独的函数来检测页面#等等(太多的工作〜)
答案 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;
});