Задержка добавления класса на 2 секунды в hover () - PullRequest
4 голосов
/ 09 декабря 2011

Как использовать замедление или задержку на addClass();?

$("#date_1").hover(
    function () {
        $(this).addClass("door");
        $(this).addClass("doorstatic", "slow"); // after 2seconds i want to add this class during the hover
    }, 
    function () {
        $(this).removeClass("door");
        $(this).removeClass("doorstatic"); // both classes are instantly removed when hover off
    }
);

Ответы [ 3 ]

12 голосов
/ 09 декабря 2011
$("#date_1").hover(   
    function () {
        var $this = $(this);

        $this.addClass("door");
        setTimeout(function() {
            $this.addClass("doorstatic");
        }, 2000); // 2000 is in mil sec eq to 2 sec.
    },
    function () {
        $(this).removeClass("door doorstatic");
    }
);

Вы можете группировать свои классы как removeClass("door doorstatic")

Проблема здесь в том, что если вы наведите курсор мыши и до двух секунд наведите курсор мыши, у вас все равно будет класс doorstatic для элемента.

Исправление:

$("#date_1").hover(    
    function () {
        var $this = $(this),
            timer = $this.data("timer") || 0;

        clearTimeout(timer);
        $this.addClass("door");

        timer = setTimeout(function() {
            $this.addClass("doorstatic");
        }, 2000); // 2000 is in mil sec eq to 2 sec.

        $this.data("timer", timer);
    },
    function () {
        var $this = $(this),
            timer = $this.data("timer") || 0;

        clearTimeout(timer);
        $this.removeClass("door doorstatic");
    }
);

Создан живой пример решения на jsFiddle .

2 голосов
/ 09 декабря 2011

На самом деле вы можете просто добавить вызов к задержке jQuery к вам addClass вызов.

Что-то вроде

 $(this).addClass("door").delay(2000).addClass("doorstatic", "slow"); 

должно помочь.*

2 голосов
/ 09 декабря 2011

Метод javascript setTimeout может использоваться для запуска кода, который вы задаете после заданной задержки в миллисекундах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...