お知らせ等で使えそうなバルーン【jQuery】

今年最初の投稿はお知らせ等に使えそうなバルーンです。
バルーン以外の箇所をクリックした時はバルーンを非表示にします。

See the Pen 180112_フキダシ by nekuta (@nekuta) on CodePen.

連続クリックの防止

jQueryの.on()は処理が重複するので、フラグを用意し、処理が始まったらfalse、処理が終わったらfadeIn、fadeOutのスピード分遅延させてtrueに戻しています。

    var $icons = $('i');
    var flg = true;
    var speed = 200;

    $icons.on('click', function () {
        //flg=trueのものだけ通す
        if (flg) {
            //flgをfalseにして連続クリックを防止
            flg = false;
            var $baloon = $(this).next('.baloon');

            if ($baloon.hasClass('is-active')) {
                $baloon.removeClass('is-active').fadeOut(speed);
            } else {
                $('.baloon').removeClass('is-active').fadeOut(speed);
                $baloon.addClass('is-active').fadeIn(speed);
            }
            //speed(ここでは200ミリ秒)後にflgをtrueにする
            setTimeout(function () {
                flg = true;
            }, speed)
        }
        //他の箇所をクリックしたら閉じるように
        $(document).on('click', function (e) {
            if (!$(e.target).closest('.baloon').length) {
                $('.baloon').removeClass('is-active').fadeOut(speed);
            }
        });

        return false;
    });