延迟链接点击

时间:2012-01-08 05:10:46

标签: javascript jquery delay

以下是与我合作的小提琴:http://jsfiddle.net/Scd9b/

点击后如何延迟href功能?

例如,用户点击该链接,该消息将向下滑动一会儿...... ,并在2秒后,用户继续浏览其链接的页面。

对不起,每个人都忘记提到有一些没有链接的锚点。

8 个答案:

答案 0 :(得分:6)

检查这个小提琴:http://jsfiddle.net/C87wM/1/

像这样修改你的切换:

$("a.question[href]").click(function(){
    var self = $(this);
    self.toggleClass("active").next().slideToggle(2000, function() {
        window.location.href = self.attr('href'); // go to href after the slide animation completes
    });
    return false; // And also make sure you return false from your click handler.
});

答案 1 :(得分:4)

您可以通过设置window.location模拟导航到页面。因此,我们将使用preventDefault阻止链接的正常功能,然后在setTimeout中,我们将设置正确的window.location:

https://codepen.io/anon/pen/PePLbv

$("a.question[href]").click(function(e){
    e.preventDefault();
    if (this.href) {
        var target = this.href;
        setTimeout(function(){
            window.location = target;
        }, 2000);
    }
});

答案 2 :(得分:1)

取消点击并使用setTimeout更改位置。

$(document).ready(function(){

    $("span.answer").hide();

    $("a.question").click(function(e){
        $(this).toggleClass("active").next().slideToggle("slow");
        e.preventDefault();
        var loc = this.href;
        if(loc){
            window.setTimeout( function(){ window.location.href=loc; }, 2000 );
        }
    });

});

答案 3 :(得分:1)

$(document).ready(function(){

    $("span.answer").hide();

    $("a.question").click(function(e){
        e.preventDefault();
        $(this).toggleClass("active").next().slideToggle("slow");
        var Link = $(this).attr("href");
        setTimeout(function()
        {
             window.location.href = Link;
        },2000);
    });

});

答案 4 :(得分:0)

首先防止链接的默认操作。然后添加2秒的超时,之后页面将重定向到链接的url属性中的href

$("a.question").click(function(e){
    e.preventDefault();
    $(this).toggleClass("active").next().slideToggle("slow");
    setTimeout(function(){
        location.href = $(this).prop("href");
    }, 2000);
});

Example

答案 5 :(得分:0)

点击处理程序中的e.preventDefault怎么样?然后做一个带你到目的地的setTimeout?

$("a.question").click(function(e){
    e.preventDefault();
    $(this).toggleClass("active").next().slideToggle("slow");
    setTimeout('window.location.href=' + $(this).attr(href), 2000);
});

答案 6 :(得分:0)

这应该这样做:

$("a[href]").click(function () {
    var url = this.href;
    setTimeout(function () {
        location.href = url;
    }, 2000);
    return false;
});

答案 7 :(得分:0)

设置窗口位置对我来说不是一个好主意,所以这就是我要做的

点击时,它会检查用户是否单击了链接(如果是),它会等待2秒钟,然后再次触发点击,因为它不是用户触发的,所以这次不会等待

document.getElementById("question").addEventListener("click", function(e) {

 //if user clicked prevent default and trigger after 2 seconds
 if(e.isTrusted) {
 	e.preventDefault();
  
  //after 2 seconds click it and it'll not wait since it's not user triggered 
  setTimeout(function() {
     e.target.click();
  }, 2000);
 }
});
<a href="http://www.bing.com" id="question">Bing</a>