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.fadeToあなたはすべてを置き換える必要がありますslider.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.$controlsまたはを使用する必要があるかどうかを判断する必要がありますslider.controls

アップデート

質問を変更しましたが、現在はslider.$controls両方の時間を使用しています。DOM要素が使用可能であることを確認できるように、mouseoverコードをイベントハンドラー内に配置する必要があります。document.ready

$(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オブジェクトをラップしましたが、2回目はラップしていません。slider.$controlsまだjQueryオブジェクトでない場合は、必ずラップしてください(多くの場合、開発者$は、変数名の最初の文字として、 jQueryオブジェクト)。

于 2012-01-24T23:23:40.150 に答える