0

我正在使用一个名为任何滑块的插件,并试图让控件在 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);
        };
});
4

3 回答 3

1

你应该slider.$controls.fadeToslider.controls.fadeTo

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

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

});
于 2012-01-24T23:19:30.717 回答
0

你在第 2 行有一个语法错误。你在哪里

slider.$controls.fadeTo...

你应该有

$(this).fadeTo...

因为一旦您在第 1 行输入了匿名函数,该this对象现在指的是您正在执行此代码的 DOM 元素,该元素由slider.controls.

于 2012-01-24T23:23:11.663 回答
0

首先slider.controls用于定位控制元素,然后slider.$controls用于定位相同的元素。我认为你需要决定它是哪一个。

此外,在回调函数中,您可以将this其用作对已触发事件的元素的引用:

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

否则,如果您想同时淡入所有控件,那么您只需要弄清楚是否需要使用slider.$controlsslider.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 对象中,但不是第二次,如果它还不是一个 jQuery 对象,请确保这样做slider.$controls(很多时候开发人员将 a$作为变量名的第一个字符来表示它是一个 jQuery 对象)。

于 2012-01-24T23:23:40.150 回答