Edit in JSFiddle

/**
 * User-Agent check Plugin
 * User: Tenderfeel
 * Date: 11/06/20
 * LastModified: 11/06/22
 *
 */


(function($){
    /**
     * jQuery function 'checkAgent'
     * @param method {string|object|undefined}
     *
     * $(document.body).checkAgent({});
     */
    $.fn.checkAgent = function(method){

        var ua = navigator.userAgent;
        var ws = $(window).width();
        var sw  = screen.width;

        var TYPE = 'PC';
        var OS = null;
        var APPLE = false;
        var ANDROID = false;
        var GARAPAGOS = false;
        var DEVICE_NAME = null;
        var VERSION = null;
        var LOCALE = null;
        var LANG = null;
        var COUNTRY = null;
        var SMARTPHONE = false;
        
        var _doLocale = function(){
            LOCALE = window.navigator.language || $('html').attr('lang');
            if(LOCALE && LOCALE.indexOf('-') !== -1){
                var ls = LOCALE.split('-');
                LANG = ls[0];
                COUNTRY = ls[1];
            }else{
                LANG = LOCALE;
                COUNTRY = 'unknown';
            }
        };

        var _doOS = function(){
            if(ua.indexOf('Win') !== -1){
                OS = 'win';
            }else if(ua.indexOf('Mac') !== -1){
                OS = 'mac';
            }else{
                OS = 'unknown';
            }
        };

        var _doGarapagos = function(){

            _doLocale();
            var m;
            
            if(ua.indexOf('DoCoMo') !== -1||ua.indexOf('FOMA') !== -1){
                OS = 'docomo';
                TYPE = 'garapagos';
                m = ua.match(/Mozilla\/[\d\.]+\s\(([\d\w]+);\w+;([\w\d]+);\w+\)/i);
                if(m){
                    VERSION = m[2];
                    DEVICE_NAME = m[1];
                }
                GARAPAGOS = true;
                return true;
                
            }else if(ua.indexOf('KDDI') !== -1){
                //auはOperaMiniらしい
                OS = 'au';
                TYPE = 'garapagos';
                m = ua.match(/^Mozilla\/[\d\.]+\s*\(.+;\s*KDDI-([\w\d]+)\)/i);

                if(m){
                    VERSION = $.browser.version;
                    DEVICE_NAME = m[1];
                }
                GARAPAGOS = true;
                return true;

            }else if(ua.indexOf('SoftBank') !== -1){
                //SoftBankはNetFrontらしい
                OS = 'softbank';
                TYPE = 'garapagos';
                m = ua.match(/Mozilla\/[\d\.]+\s\(([\d\w]+);SoftBank;*([\d\w]+)*\).+?(\d\.\d)$/i);
                DEVICE_NAME = m[1];
                VERSION = m[3];
                GARAPAGOS = true;
                return true;
            }
            return false;
        };
        
        var _doAndroid = function(){
            ANDROID = true;
            SMARTPHONE = true;
            OS = 'android';
           var m = ua.match(/Android (\d\.\d(?:[^;]+)*); (\w{2,3})\-(\w{2,3});\s([^\/]+)\sBuild/i);
            VERSION = m[1];
            LANG = m[2];
            COUNTRY = m[3];
            DEVICE_NAME = m[4].replace(/\s/ig, '');
            return true;
        };

        var _doApple = function(){
             var m = ua.match(/\((\w+); U;[\w\s]+? OS (\d_\d(?:_\d)*)/i);
             APPLE = true;
             DEVICE_NAME = m[1];
             OS = 'apple';
             VERSION = m[2].replace(/_/g, '.');
             SMARTPHONE = true;
             return true;
        };

        var _doWebkit = function(){
            var m = ua.match(/(?:(\w+)\/([\d\.\-\w]+)\s)*(?:(\w+)\/([\d\.\w]+))$/i);
            if(m[3] === 'Safari' && m[1] === 'Version'){
                VERSION = m[2];
                DEVICE_NAME = m[3];
            }else if(m[3] === 'Safari' && m[1]){
                VERSION = m[2];
                DEVICE_NAME = m[1];
            }else if(!m[1] && !m[2]){
                VERSION = m[4];
                DEVICE_NAME = m[3];
            }

            return true;
        };

        var _doTrident = function(){
            VERSION = $.browser.version;
            if(ua.indexOf('Nitro') !== -1){
                DEVICE_NAME = 'Nintendo DS';
                OS = 'nds';
            }else if(ua.indexOf('Lunascape') !== -1){
                DEVICE_NAME = 'Lunascape';
            }else if(ua.indexOf('Sleipnir') !== -1){
                DEVICE_NAME = 'Sleipnir';
            }else if(ua.indexOf('InettvBrowser') !== -1){
                DEVICE_NAME = 'InettvBrowser';
                var m  = ua.match(/InettvBrowser\/([\d\.]+) /);
                VERSION = m[1];
                OS = 'tv';
                TYPE = 'nettv';
            }else{
                DEVICE_NAME = 'InternetExplorer';
            }
            return true;
        };

        var _doGecko = function(){//
            var m = ua.match(/(?:(?:Mech\.)*([\w\d]+)\/([\d\.]+).*?)\s\(([^;\/\:]+)[;\/\:]?\s*([^;\/]*);?([^;]*);?([^;]*);?\s?([^;]*)\)[;\s]*(.*)/i);

            if(m){
                switch(m[3]){
                    case 'PSP PlayStation Portable':
                        OS = 'psp';
                        DEVICE_NAME = 'PlayStationPortable';
                        TYPE = 'game';
                    break;
                    case 'Nintendo GameBoy':
                        OS = 'ngb';
                        TYPE = 'game';
                        DEVICE_NAME = 'GameBoy';
                        VERSION = m[2];
                    break;
                    case 'PS2':
                        OS = 'ps2';
                        DEVICE_NAME = 'PlayStation2';
                        TYPE = 'game';
                    break;
                    case 'PLAYSTATION 3':
                        OS = 'ps3';
                        DEVICE_NAME = 'PlayStation3';
                        TYPE = 'game';
                    break;
                    case 'DreamPassport':
                        DEVICE_NAME = 'DreamPassport';
                        TYPE = 'game';
                        VERSION = m[4];
                    break;
                    case 'PDA':
                        OS = 'pda';
                        TYPE = 'pda';
                        DEVICE_NAME = 'PDA';
                        VERSION = m[2];
                    break;
                    case 'DTV':
                        DEVICE_NAME = m[4];
                        TYPE = 'nettv';
                        OS = 'tv';
                        VERSION = m[8].replace(/^[^\s]+\s\w+\/([\d\.]+).+$/i,'$1');
                    break;
                    default:
                        m = ua.match(/(?:(\w+)\/([\d\.\-\w]+)\s)*(?:[^\s]*\s)?([^\/]+)\/([\d\.]+)(?:[^\/]*)$/i);

                        if(m[1] && m[1] === 'Gecko'){
                            DEVICE_NAME = m[3] ? m[3] : m[1];
                            VERSION = m[4] ? m[4] : m[1];
                        }else if(m[1] && m[1] !== 'Gecko'){
                            DEVICE_NAME = m[1];
                            VERSION = m[2];
                        }else{
                            if(m[3] === 'Mozilla'){
                                DEVICE_NAME = 'Mozilla';
                                VERSION = ($.browser.version==='0')? m[4] : $.browser.version;
                            }
                        }

                    break;
                }
            }
            return true;
        };
        
        var _doOpera = function(){
            var m = ua.match(/(\w+)\/([\d\.]+)\s\(([^;]+).+\)(?:\s\w{5}\s([\d\.]+))*/i);
            DEVICE_NAME = 'Opera';
            if(m[3] === 'Nintendo Wii'){
                OS = 'wii';
                TYPE = 'game';
            }else if(m[3] === 'Nintendo DSi'){
                OS = 'ndsi';
                TYPE = 'game';
            }else if(ua.indexOf('Nitro') !== -1){
                OS = 'nds';
                TYPE = 'game';
            }
            if(m[1] === 'Opera'){
                VERSION = m[2];
            }else if(m[4]){
                VERSION = m[4];
            }
            
            return true;
        };
        
        var _doPC = function(){
            _doOS();
            _doLocale();

            if($.browser.webkit){
                if(ua.indexOf('Android') !== -1){
                    return _doAndroid();
                }else if(ua.indexOf('iPhone') !== -1 || ua.indexOf('iPad') !== -1 || ua.indexOf('iPod') !== -1){
                    return _doApple();
                }else{//PC用ブラウザ
                    var m = ua.match(/\((\w+);*/i);
                    console.log(m);
                    OS = m[1].toLowerCase().slice(0,3);
                    _doLocale();
                    return _doWebkit();
                }

            }else if($.browser.msie){
                return _doTrident();

            }else if($.browser.mozilla){
                return _doGecko();
            }else if($.browser.opera){
                return _doOpera();
            }else{
                
                VERSION = 0;
            }
        };

        //public methods
        var publics = {
            
            init:function(options){
                this.checkAgent.settings = $.extend({}, this.checkAgent.defaults, options);
                var settings = this.checkAgent.settings;

                if(! $.browser.agent){
                    var cn = [];
                    var v = 'v';
                    TYPE = 'pc';

                    if(! _doGarapagos()){//PCサイトビューアー携帯 or ゲーム or テレビ
                        if($.browser.version){
                            _doPC();
                        }
                    }

                    LOCALE = (!LOCALE && LANG) ? LANG + '-' + COUNTRY.toUpperCase() : LOCALE;

                    if((ANDROID || APPLE) && ( ws === sw) && (window.orientation >= 0)){
                        SMARTPHONE = true;
                        TYPE = 'smartphone';
                    }

                    $.extend($.browser, {'agent':{
                        'apple' : APPLE,
                        'android' : ANDROID,
                        'device' : DEVICE_NAME,
                        'version' : VERSION,
                        'locale' : LOCALE,
                        'lang' : LANG,
                        'country' : COUNTRY,
                        'type':TYPE,
                        'os':OS,
                        'smartphone':SMARTPHONE,
                        'garapagos':GARAPAGOS
                    }});
                    
                    $.each(settings, function(key, val){
                        if(val !== true) return;
                        switch(key){
                            case 'garapagos':
                                if($.browser.agent.garapagos) cn.push('garapagos');
                            break;
                            case 'smartphone':
                                if($.browser.agent.garapagos) cn.push('smartphone');
                            break;
                            case 'version':
                                if($.browser.agent.version){
                                    cn.push('v' + $.browser.agent.version.replace(/\./g, '_'));
                                }
                            break;
                            default:
                                    cn.push($.browser.agent[key]);
                            break;
                        }
                    });
                }
                
                return this.each(function(){
                    var $element = $(this), element = this;
                    $element.addClass(cn.join(' '));
                });
            },

            'add':function(type){
                if(! type) return;
                var txt = $.getAgent(type);
                switch(type){
                    case 'version':
                         txt =  'v' + txt;
                    break;
                    case 'garapagos':
                         if(txt===true) txt = 'garapagos';
                    break;
                    case 'smartphone':
                         if(txt===true) txt = 'smartphone';
                    break;
                }
                $(this).addClass(txt);
            }
        };

        $.extend({
            getAgent:function(type){
                if(! $.browser.agent) return null;
                if(type !== 'all' && typeof type === 'string'){
                    return $.browser.agent[type];
                }else if(!type || type === 'all'){
                    var str = '';
                    var s = arguments[1] || ':';
                    var n = arguments[2] || '<br />';
                    $.each($.browser.agent, function(key, val){
                        str += key + s + val + n;
                    });
                    return str;
                }
            }
        });

        if(publics[method]){
            return publics[method].apply(this, Array.prototype.slice.call(arguments, 1));
        }else if(typeof method === 'object' || !method){
            return publics.init.apply(this, arguments);
        }else{
            $.error(method + ' はcheckAgentプラグインに定義されていません');
        }
    };

    $.fn.checkAgent.defaults = {
        'type':true,
        'os':false,
        'device':true,
        'version':false,
        'lang':false,
        'country':false,
        'locale':false,
        'smartphone':false,
        'garapagos':false
    };

    $.fn.checkAgent.settings = {};
    
})(jQuery);

//demo
$(document).ready( function() {
    $(document.body).checkAgent();

    $('#is-smartphone').checkAgent('add', 'smartphone');
    $('#info').html($.getAgent());

});
<h1>jQuery.checkAgent</h1>
<p id="is-smartphone" class="sample">スマホの時だけ青くなります</p>
<div class="sample">
    <div id="info"></div>
</div>
h1{
    font-weight:bold;
    margin:1em 0;
}

.pc h1{
    color:#1e90ff;
}
.smartphone h1 {
    color:#5f9ea0;
}

.garapagos h1 {
    color:#7b68ee;
}

.sample{
    border: solid 1px #ccc;
    padding: 0.5em;
    margin:1em 0;
}

#is-smartphone.smartphone {
    background: #000099;
    color:#fff;
}