jquery延迟了一个链接

时间:2010-06-13 12:14:28

标签: jquery

我有一个简短的基于CSS的动画,我希望在跟踪链接之前播放(一张在页面加载后突然插入的卡片在点击后跳出来)。但是,目前,调用的页面加载速度太快。我希望能够暂时延迟href的跟踪。

这就是我所拥有的:

$(document).ready(function() {
    $("#card").css("top","0px");
    $(".clickit").click(function() {
        $("#card").css("top","-500");
    });
});

第一行在页面加载时猛扑卡片。之后是修改CSS的点击调用,但就像我说那里需要有某种延迟,因为页面立即加载,而不是在动画之后加载。修改后的CSS如下所示:

#card {
  width: 400px;
  height: 500px;
  position: relative;
  top: -500px;
  -webkit-transition:all .5s;
}

(是的,我现在知道这只是webkit)

这个问题与2008年的this question非常相似,但我知道jQuery从那时起已经有了很大的更新,所以我想看看是否有更现代的解决方案。

谢谢!

3 个答案:

答案 0 :(得分:11)

由于您使用的是.css()-webkit-transition:,因此您需要使用setTimeout()来延迟新位置。

尝试实例: http://jsfiddle.net/2WJH9/

$(document).ready(function() {
    $("#card").css("top","0px");
    $(".clickit").click(function() {
        $("#card").css("top","-500px");  // Added px to make it work, 
                                         //   or get rid of quotes -500
        var href = $(this).attr('href');

             // Delay setting the location for one second
        setTimeout(function() {window.location = href}, 1000);
        return false;
    });
});​

setTimeout()会将window.location延迟设置为1秒(1,000毫秒)。如果您想匹配.5的{​​{1}}秒,请将其更改为500。

答案 1 :(得分:5)

您可以在链接上使用preventDefault(),然后使用jQuery的animate函数在动画完成后按照链接执行CSS转换。

$('.clickit').click(function(e) {
    e.preventDefault();
    href = $(this).attr('href');
    $('#card').animate( { top: '-500px' }, 500, function() {
        window.location = href;
    });
});

答案 2 :(得分:2)

  

这个问题与2008年的这个问题非常相似,但我知道jQuery从那时起已经有了很大的更新,所以我想看看是否有更现代的解决方案。

不,仍然是同样的答案。取消活动,然后稍后自己加载该位置。