JQuery FadeTo при наведении курсора - PullRequest
0 голосов
/ 25 января 2012

Я использую плагин, называемый что-нибудь слайдер, и пытаюсь заставить элементы управления исчезать через 4 секунды (что работает), а затем изменить прозрачность обратно на 1 при наведении курсора (не работает).Вот что у меня пока ... что я делаю не так?

$(slider.$controls).mouseover(function() 
slider.$controls.fadeTo(400, 1.0);
});

$(function () {
    var fadeTime = 400,
        fadeDelay = 4000,
        timer, hideControls = function (slider) {
            clearTimeout(timer);
            setTimeout(function () {
                slider.$controls.fadeTo(fadeTime, 0.3);
                $('.tooltip').fadeOut(fadeTime);
            }, fadeDelay);
        };
});

Ответы [ 3 ]

1 голос
/ 25 января 2012

вы должны заменить каждые slider.$controls.fadeTo на slider.controls.fadeTo

$(slider.controls).mouseover(function() 

    $(this).fadeTo(400, 1.0);

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

Сначала вы используете slider.controls для нацеливания на элемент (ы) управления, затем вы используете slider.$controls для нацеливания на тот же элемент (ы).Я думаю, вам нужно решить, какой из них.

Кроме того, внутри функции обратного вызова вы можете использовать this в качестве ссылки на элемент, который вызвал событие:

$(slider.controls).bind('mouseover', function () {
    $(this)...
});

В противном случае, если вы хотите вывести все элементы управления одновременно, вам просто нужно выяснить, нужно ли использовать slider.$controls или slider.controls.

ОБНОВЛЕНИЕ

Я вижу, вы изменили свой вопрос, и теперь вы используете slider.$controls оба раза.Вы должны поместить свой код mouseover в обработчик событий document.ready, чтобы вы знали, что элементы DOM доступны:

$(function () {

    slider.$controls.mouseover(function() 
        slider.$controls.fadeTo(400, 1.0);
    });

    var fadeTime = 400,
        fadeDelay = 4000,
        timer, hideControls = function (slider) {
            clearTimeout(timer);
            setTimeout(function () {
                slider.$controls.fadeTo(fadeTime, 0.3);
                $('.tooltip').fadeOut(fadeTime);
            }, fadeDelay);
        };

Также я заметил, что вы включили slider.$controls в объект jQuery в первый раз,но не второй, обязательно сделайте это, если slider.$controls уже не является объектом jQuery (много раз разработчики помещают $ в качестве первого символа имени переменной, чтобы обозначить, что это объект jQuery).

0 голосов
/ 25 января 2012

У вас есть синтаксическая ошибка в строке 2. Если у вас есть

slider.$controls.fadeTo...

, вы должны иметь

$(this).fadeTo...

, потому что, как только вы ввели анонимную функцию в строке 1,this объект теперь ссылается на элемент DOM, для которого вы выполняете этот код, который представляет собой элемент, представленный slider.controls.

...