2016-04-16 4 views
0

私はいくつかの奇妙な仕事があります。私は自分のウェブページに車のターンライト機能を実装する必要があります。私は2つのボタン(左右)と2つの緑の矢印(左右)を持っています。それは次のようなものでなければなりません:左ボタンをクリックします(左矢印は非表示になります)、左矢印が点滅します。もう一度クリックすると、アニメーションが停止して非表示になります。私はちょうどボタンの状態を処理し、それを適切に使用することを知らない。ありがとう。jQueryで車のターンライト(ウインカー)を行う方法は?

$("#arrow-left").click(function blinker() { 
    if(something) { 
     $('#arrow-left-blink').css("visibility", "visible"); 
     $('#arrow-left-blink').fadeOut(500); 
     $('#arrow-left-blink').fadeIn(500); 
     setInterval(blinker, 1000); 
    } else { 
    //hide 
    } 
} 
+1

これには素晴らしい「」タグを使用できます。 – adeneo

+2

これは廃止されました – ilyablbnv

+0

単に 'something'変数をtrue/falseに切り替えるだけです – charlietfl

答えて

-2

私は、cssアニメーションでフェードと点滅を処理し、JqueryのクリックでtoggleClassだけを処理するCSSクラスを作成します。

+0

OPはクラスを切り替えるのではなく、状態を助ける必要があります – LGSon

+1

あなたのコメントは、サンプルコードといくつかの詳細で実際の答えに改善することができます。 – Andy

+0

これはうまく動作します、ありがとう! – ilyablbnv

1

さまざまなクリックで状態を保存するには、クロージャを作成する必要があります。クリックハンドラをself-invoking関数の中に置いてクロージャを作成し、その内部に共有変数を宣言+するだけです。クリックハンドラの最後でカウントを増やしてください。モジュラス演算子 '%'で真と偽の間を切り替えることができます。 0%2==01%2==12%2==03%2==14%2==0、...

(function(){ 
    var counter = 0; 
    $("#arrow-left").click(function blinker() { 
     if(counter%2) {// modulus operator will toggle between 0 and 1 which corresponds to truthy or falsy 
     $('#arrow-left-blink').css("visibility", "visible"); 
     $('#arrow-left-blink').fadeOut(500); 
     $('#arrow-left-blink').fadeIn(500); 
     setInterval(blinker, 1000); 
     } else { 
     //hide 
     } 
     counter++; 
    }); 
})(); 
+0

元気で元気に答えると申し訳ありませんが、タブ+スペースを押して回答の書式を設定し、偶然に送信しました。 – sniels

1

あなたが外で変数カウンタを定義することができます。 例えば:ここで

$(document).ready(function() { 


    var counter = 0; 
    var blinking; 

    function blinker() { 
    $('#arrow-left-blink').fadeOut(500); 
    $('#arrow-left-blink').fadeIn(500); 
    blinker(); 
    } 

    $("#arrow-left").click(function() { 
    counter++; 
    if (counter % 2 == 1) { 
     $('#arrow-left-blink').css("visibility", "visible"); 
     blinking = setTimeout(function() { 
     blinker(); 
     }, 1000); 
    } else { 
     clearInterval(blinking); 
     $('#arrow-left-blink').css("visibility", "hidden"); 
    } 
    }); 
}); 

はJSFiddleリンクです:https://jsfiddle.net/o2xb8Lod/

+0

あなたはまたadeneoのコメントをチェックする必要があります。 – boroboris

関連する問題