diff --git a/core/includes/common.inc b/core/includes/common.inc
index e3f405f..b7c7c92 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -3850,6 +3850,7 @@ function drupal_add_js($data = NULL, $options = NULL) {
       drupal_add_library('system', 'jquery', TRUE);
       drupal_add_library('system', 'jquery.once', TRUE);
       drupal_add_library('system', 'html5shiv', TRUE);
+      drupal_add_library('system', 'classList', TRUE);
     }
 
     switch ($options['type']) {
diff --git a/core/misc/autocomplete.js b/core/misc/autocomplete.js
index 0ffe404..56f8cf0 100644
--- a/core/misc/autocomplete.js
+++ b/core/misc/autocomplete.js
@@ -149,9 +149,9 @@ Drupal.jsAC.prototype.selectUp = function () {
 Drupal.jsAC.prototype.highlight = function (node) {
   // Unhighlights a suggestion for "keyup" and "keydown" events.
   if (this.selected !== false) {
-    $(this.selected).removeClass('selected');
+    this.selected.classList.remove('selected');
   }
-  $(node).addClass('selected');
+  node.classList.add('selected');
   this.selected = node;
   $(this.ariaLive).html($(this.selected).html());
 };
@@ -160,7 +160,7 @@ Drupal.jsAC.prototype.highlight = function (node) {
  * Unhighlights a suggestion.
  */
 Drupal.jsAC.prototype.unhighlight = function (node) {
-  $(node).removeClass('selected');
+  node.classList.remove('selected');
   this.selected = false;
   $(this.ariaLive).empty();
 };
@@ -249,13 +249,13 @@ Drupal.jsAC.prototype.found = function (matches) {
 Drupal.jsAC.prototype.setStatus = function (status) {
   switch (status) {
     case 'begin':
-      $(this.input).addClass('throbbing');
+      this.input.classList.add('throbbing');
       $(this.ariaLive).html(Drupal.t('Searching for matches...'));
       break;
     case 'cancel':
     case 'error':
     case 'found':
-      $(this.input).removeClass('throbbing');
+      this.input.classList.remove('throbbing');
       break;
   }
 };
diff --git a/core/misc/classList.js b/core/misc/classList.js
new file mode 100644
index 0000000..a0e3189
--- /dev/null
+++ b/core/misc/classList.js
@@ -0,0 +1,2 @@
+/* @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js*/
+if(typeof document!=="undefined"&&!("classList" in document.createElement("a"))){(function(j){if(!("HTMLElement" in j)&&!("Element" in j)){return}var a="classList",f="prototype",m=(j.HTMLElement||j.Element)[f],b=Object,k=String[f].trim||function(){return this.replace(/^\s+|\s+$/g,"")},c=Array[f].indexOf||function(q){var p=0,o=this.length;for(;p<o;p++){if(p in this&&this[p]===q){return p}}return -1},n=function(o,p){this.name=o;this.code=DOMException[o];this.message=p},g=function(p,o){if(o===""){throw new n("SYNTAX_ERR","An invalid or illegal string was specified")}if(/\s/.test(o)){throw new n("INVALID_CHARACTER_ERR","String contains an invalid character")}return c.call(p,o)},d=function(s){var r=k.call(s.className),q=r?r.split(/\s+/):[],p=0,o=q.length;for(;p<o;p++){this.push(q[p])}this._updateClassName=function(){s.className=this.toString()}},e=d[f]=[],i=function(){return new d(this)};n[f]=Error[f];e.item=function(o){return this[o]||null};e.contains=function(o){o+="";return g(this,o)!==-1};e.add=function(o){o+="";if(g(this,o)===-1){this.push(o);this._updateClassName()}};e.remove=function(p){p+="";var o=g(this,p);if(o!==-1){this.splice(o,1);this._updateClassName()}};e.toggle=function(o){o+="";if(g(this,o)===-1){this.add(o)}else{this.remove(o)}};e.toString=function(){return this.join(" ")};if(b.defineProperty){var l={get:i,enumerable:true,configurable:true};try{b.defineProperty(m,a,l)}catch(h){if(h.number===-2146823252){l.enumerable=false;b.defineProperty(m,a,l)}}}else{if(b[f].__defineGetter__){m.__defineGetter__(a,i)}}}(self))};
\ No newline at end of file
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index de7241f..2ea3abc 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -1389,6 +1389,20 @@ function system_library_info() {
     ),
   );
 
+  // classList polyfill.
+  $libraries['classList'] = array(
+    'title' => 'classList',
+    'website' => 'https://github.com/eligrey/classList.js',
+    'version' => 'master',
+    'js' => array(
+      'core/misc/classList.js' => array(
+        'group' => JS_LIBRARY,
+        'weight' => -21,
+        'browsers' => array('IE' => 'gte IE 8', '!IE' => FALSE),
+      ),
+    ),
+  );
+
   // jQuery UI.
   $libraries['jquery.ui.core'] = array(
     'title' => 'jQuery UI: Core',
