[ jQuery ] 指定した要素が画面内に入っているか判定するjQueryプラグイン

#概要
簡単に言ってしまうとタイトル通りですが、
状態によってクラス名を付与するようにしました。

###付与されるクラス
- "_item_out_top"：上辺が画面よりも下にいる（画面外）
- "_item_in_top"：上辺だけ入っている
- "_item_in_all"：全体が入っている
- "_item_in_bottom"：下辺だけが入っている
- "_item_out_bottom"：下辺が画面よりも上にいる（画面外）

※似たような jQueryプラグインとしては <a href="https://github.com/protonet/jquery.inview">jquery.inview</a> が既にありますが、
これは要素が画面内にあるかどうかだけを判定しているようです。

# HTML
``` index.html
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>動作サンプル</title>
<style>
    body { margin: 0; padding: 0; text-align: center;}
    .space { width: 5px; height: 1500px; margin: 0 auto; background: #efefef; }
    .box { width: 200px; height: 200px; margin: 0 auto; }
    .box.red { background: red; }
    .box.blue { background: blue;}
    .box.green { background: green; }
    .box.orange { background: orange; }
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> 
<script src="common/js/inviewChecker.jquery.js"></script> 
<script>
        $(function(){
            // チェック対象のクラス名を指定する
            $('.checkItem').inviewChecker();
        });
    </script>
</head>
<body>
    <div class="space"></div>
    <div class="box red checkItem"></div><!-- チェック対象 -->
    <div class="space"></div>
    <div class="box blue checkItem"></div><!-- チェック対象 -->
    <div class="space"></div>
    <div class="box green checkItem"></div><!-- チェック対象 -->
    <div class="space"></div>
    <div class="box red checkItem"></div><!-- チェック対象 -->
    <div class="space"></div>
</body>
</html>
```

#jQueryプラグイン
``` inviewChecker.jquery.js
/* ----------------------------------------
   inviewChecker.jquery.js
   Copyright (c) 2020 Toru Watanabe
   Released under the MIT license
---------------------------------------- */
(function ($) {
    $.fn.inviewChecker = function () {
        let $t = $(this);

        let inviewChecker = (T) => {
            let _st = $(window).scrollTop();

            T.each(function () {
                let $t = $(this),
                    _tt = $t.offset().top,
                    _tb = _tt + $t.height(),
                    _p = _st + $(window).height();

                let _classSet = '_item_in_all _item_in_top _item_in_bottom _item_out_top _item_out_bottom';

                if (_p >= _tt) {
                    // 上辺だけ入っている時
                    if (_p <= _tb) {
                        $t.removeClass(_classSet).addClass('_item_in_top');
                    }
                    // 下辺まで全て入った時
                    if (_p >= _tb) {
                        $t.removeClass(_classSet).addClass('_item_in_all');
                    }
                    // 上辺が画面の上に出た時
                    if (_tt < _st) {
                        $t.removeClass(_classSet).addClass('_item_in_bottom');
                    }
                    // 下辺が画面の上に出た時
                    if (_tb < _st) {
                        $t.removeClass(_classSet).addClass('_item_out_bottom');
                    }
                } else {
                    // 上辺が画面の下にいる時
                    $t.removeClass(_classSet).addClass('_item_out_top');
                }
            });
        }

        // 読込み直後
        inviewChecker($t);

        // ウィンドウスクロール時
        $(window).on('scroll', function () {
            inviewChecker($t);
        });

        // ウィンドウリサイズ時
        let timer = 0;

        $(window).on('resize', function () {
            if (timer > 0) {
                clearTimeout(timer);
            }

            timer = setTimeout(function () {
                inviewChecker($t);
            }, 1);
        });
    };
})(jQuery);

```

#圧縮版
``` inviewChecker.jquery.min.js
/* ----------------------------------------
   inviewChecker.jquery.min.js
   Copyright (c) 2020 Toru Watanabe
   Released under the MIT license
---------------------------------------- */
(function($){$.fn.inviewChecker=function(){let $t=$(this),inviewChecker=(T)=>{let _st=$(window).scrollTop();T.each(function(){let $t=$(this),_tt=$t.offset().top,_tb=_tt+$t.height(),_p=_st+$(window).height(),_classSet='_item_in_all _item_in_top _item_in_bottom _item_out_top _item_out_bottom';if(_p>=_tt){if(_p<=_tb){$t.removeClass(_classSet).addClass('_item_in_top');}if(_p>=_tb){$t.removeClass(_classSet).addClass('_item_in_all');}if(_tt<_st){$t.removeClass(_classSet).addClass('_item_in_bottom');}if(_tb<_st){$t.removeClass(_classSet).addClass('_item_out_bottom');}}else{$t.removeClass(_classSet).addClass('_item_out_top');}});}
inviewChecker($t);$(window).on('scroll',function(){inviewChecker($t);});let timer=0;$(window).on('resize',function(){if(timer>0){clearTimeout(timer);}timer=setTimeout(function(){inviewChecker($t);}, 1);});};})(jQuery);
```