As explained for example here, jQuery UI defines CSS classes like .ui-state-active (which are applied through JS), instead of using the existing CSS pseudo-classes, e.g. :active. Why?
2 Answers
I stumbled upon this recently, I found:
:active is mostly used for and implemented by different browsers for
<a> and <button>.
jQuery UI defines classes like .ui-state-active so that it can be easily applied to:
<ul>, <span>, <li>, <div>
As most of the jQuery UI elements are build up of these.
Comments
Like Niet the Dark Absol said, the added class allows support for non HTML5 browsers like IE8 and below
http://api.jquery.com/category/version/1.7/
Better Support for HTML5 in IE6/7/8
According to can I use.com, iOS Safari and android doesn't support pseudo selectors either - So the added class allows browser compatibility for those devices
:activeis not fully supported in older versions of IE - remember that jQuery's primary purpose is to bridge compatibility problems.