Задержка ссылки нажмите - PullRequest
3 голосов
/ 08 января 2012

Вот скрипка, с которой я работаю: http://jsfiddle.net/Scd9b/

Как я могу отложить функцию href после клика?

Например, пользователь нажимает на ссылку, сообщение скользитвниз Один момент ... и через 2 секунды пользователь продолжает переход на страницу, с которой он связан.

Извините, все забыли упомянуть, что есть некоторые якоря, которые не связаны.

Ответы [ 7 ]

6 голосов
/ 08 января 2012

Проверьте эту скрипку: 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.
});
4 голосов
/ 08 января 2012

Вы можете смоделировать переход на страницу с помощью настроек 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);
    }
});
1 голос
/ 08 января 2012
$(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);
    });

});
1 голос
/ 08 января 2012

Отмените щелчок и используйте 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 );
        }
    });

});
0 голосов
/ 08 января 2012

Это должно сделать это:

$("a[href]").click(function () {
    var url = this.href;
    setTimeout(function () {
        location.href = url;
    }, 2000);
    return false;
});
0 голосов
/ 08 января 2012

Как насчет e.preventDefault в вашем обработчике кликов. Затем сделайте setTimeout, который приведет вас к месту назначения?

$("a.question").click(function(e){
    e.preventDefault();
    $(this).toggleClass("active").next().slideToggle("slow");
    setTimeout('window.location.href=' + $(this).attr(href), 2000);
});
0 голосов
/ 08 января 2012

Прежде всего, предотвратите действие ссылки по умолчанию.Затем добавьте время ожидания в 2 секунды, после чего страница будет перенаправлена ​​на url, найденный в атрибуте href ссылки.

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

Пример .

...