0

これがフィドルです:http://jsfiddle.net/e5ana/9/

5 つのシーンがあり、既定のシーンがページと共に読み込まれます。マップのピンにマウスを合わせると、シーンが変わります。実際のサイトでは、黒い領域が余分なシーンを隠しています。

シーンの 1 つのコードを次に示します。

    $("a.dt").mouseenter(function(){
    $(".town").filter(':not(:animated)').animate({
    bottom: '0px'
  }, 500);
    $("#dt").animate({
    bottom: '126px'
  }, 500);
});

私が立ち往生しているところは...

10 秒経過してもピンが動かない場合は、表示されているシーンをアニメーションで下に動かし、デフォルトのシーン (id="dt") をアニメーションで上に動かします。

各 mouseenter 関数にタイムアウト コードを追加したところ、これに近づきましたが、デフォルトのシーンがアニメーション化されて動かなくなったようです。つまり、別のピンでの mouseenter は、「町」のクラスを持っているにもかかわらず、デフォルト シーンを下げることができませんでした。

私が試しているタイムアウトコードは次のとおりです。

var t;
var del = 10000; //Ms delay 
    $(document).mousemove(function(){
    clearTimeout(t);
    var t = setTimeout(function(){
        //If the mouse is not moved
        $(".town").animate({
            bottom: '0px'
        }, 500);
        $("#dt").animate({
            bottom: '126px'
        }, 500);
    }, del);
});

私は何が欠けていますか?

=====================

以下でコメントしたように、重複するグローバル「var t」を削除すると、これが機能しました。ありがとう!

デフォルトのシーンが非表示の場合にのみ、コードを実行しようとしています。これは、既定のシーンが表示されている場合、コードが実行され、そのシーンがアニメーション化され、再び元に戻るためです。

これが私が試していることです...

if ($('#dt').css('bottom') == '0px') {
var t;
var del = 10000; //Ms delay 
    $(document).mousemove(function(){
    clearTimeout(t);
    t = setTimeout(function(){
        //If the mouse is not moved
        $(".town").animate({
            bottom: '0px'
        }, 500);
        $("#dt").animate({
            bottom: '126px'
        }, 500);
    }, del);
});
}

しかし、うまくいきません。スクリプト エラーはスローされず、シーンには何も起こりません。

http://jsfiddle.net/webguy262/e5ana/18/で更新されたフィドル

4

0 に答える 0