jQuery Browser Sniffer
First problem you'll face is that IE, Opera, Firefox, Chrome and Safari aren't the only browsers in town. There are a lot of other browsers! Even the Steam app is just a browser. Anything that uses a form of WebView, or embedded browser (like game client patcher news sections) is also a browser. That equates to a lot of UA strings to account for.

The next problem is the most common problem with this approach: UA strings can be spoofed. Making it worse, browsers up to this day still spoof their UA to pretend like some other browser. For instance, Chrome 45 has the "Safari" and "AppleWebKit". With your code up there, you can easily mistake it for Safari or some other WebKit browser, even when Chrome 45 isn't Safari nor WebKit.

Now if you do want to do it in this approach and not mind the problem of playing catch-up with the latest browsers, then your first problem would be the use of jQuery. You seem to use it just to add and remove classes. Why not construct your determinations in an array, then just form a string afterwards?

var determination = [];

if(chrome) determination.push('isChrome');
if(webkit) determination.push('isWebkit');

var classes = determination.join(' ');


Another thing I notice is that you add your classes on the element you're attaching the plugin to. This also means your script runs every time you attach it, which is unnecessary. Why not run this script just once, during page load? For CSS purposes, you can attach your determinations as a class of &lt;html&gt; and prefix your styles with the class. If you use it for conditional scripts, you can store your determinations in a global variable and use indexOf.

// Put classes to &lt;html&gt;
document.documentElement.className = document.documentElement.className + ' ' + classes;

// Hide all inputs on all non-ie browsers
.not-ie input{
  display: none;
}

// Checking if IE with JS
if(~determinations.indexOf('lt-ie11')) alert('Y U NO USE NEW BROWSER???');


Now for your tests. As mentioned earlier, you might want to be more specific on your tests so that you won't be confusing a browser with another. Also, your tests are tied to each other. I don't know where the IE tests start and end. Everything's all over the place. Try breaking them apart into "plugins" so that you can easily just add in new tests.

BrowserTester.addTest('IE test', function(ua){
  // Add to this array all the classes you want to be put for this browser
  var classes = [];

  // do comparisons to check for IE

  // Return a string of classes for this test.
  return classes.join(' ');

});

// Do the same for other browsers
BrowserTester.addTest('Chrome', function(ua){...});
BrowserTester.addTest('Safari5', function(ua){...});
BrowserTester.addTest('Safari6', function(ua){...});

// Run tests. Add classes to &lt;html&gt;, expose an API to check which browser.
BrowserTester.run();