diff --git a/core/misc/ajax.js b/core/misc/ajax.js
index a586945..ad9dcae 100644
--- a/core/misc/ajax.js
+++ b/core/misc/ajax.js
@@ -258,7 +258,7 @@ Drupal.ajax = function (base, element, element_settings) {
   }
 
   // Bind the ajaxSubmit function to the element event.
-  $(ajax.element).bind(element_settings.event, function (event) {
+  $(ajax.element).on(element_settings.event, function (event) {
     return ajax.eventResponse(this, event);
   });
 
@@ -266,7 +266,7 @@ Drupal.ajax = function (base, element, element_settings) {
   // can be triggered through keyboard input as well as e.g. a mousedown
   // action.
   if (element_settings.keypress) {
-    $(ajax.element).keypress(function (event) {
+    $(ajax.element).on('keypress', function (event) {
       return ajax.keypressResponse(this, event);
     });
   }
@@ -275,7 +275,7 @@ Drupal.ajax = function (base, element, element_settings) {
   // For example, prevent the browser default action of a click, even if the
   // AJAX behavior binds to mousedown.
   if (element_settings.prevent) {
-    $(ajax.element).bind(element_settings.prevent, false);
+    $(ajax.element).on(element_settings.prevent, false);
   }
 };
 
diff --git a/core/misc/autocomplete.js b/core/misc/autocomplete.js
index 0378b95..c310808 100644
--- a/core/misc/autocomplete.js
+++ b/core/misc/autocomplete.js
@@ -16,7 +16,7 @@ Drupal.behaviors.autocomplete = {
       var $input = $('#' + this.id.substr(0, this.id.length - 13))
         .prop('autocomplete', 'OFF')
         .attr('aria-autocomplete', 'list');
-      $($input[0].form).submit(Drupal.autocompleteSubmit);
+      $($input[0].form).on('submit', Drupal.autocompleteSubmit);
       $input.parent()
         .attr('role', 'application')
         .append($('<span class="visually-hidden" aria-live="assertive"></span>')
@@ -49,9 +49,9 @@ Drupal.jsAC = function ($input, db) {
   this.db = db;
 
   $input
-    .keydown(function (event) { return ac.onkeydown(this, event); })
-    .keyup(function (event) { ac.onkeyup(this, event); })
-    .blur(function () { ac.hidePopup(); ac.db.cancel(); });
+    .on('keydown', function (event) { return ac.onkeydown(this, event); })
+    .on('keyup', function (event) { ac.onkeyup(this, event); })
+    .on('blur', function () { ac.hidePopup(); ac.db.cancel(); });
 };
 
 /**
diff --git a/core/misc/collapse.js b/core/misc/collapse.js
index c26ab55..84a803d 100644
--- a/core/misc/collapse.js
+++ b/core/misc/collapse.js
@@ -40,7 +40,7 @@ $.extend(CollapsibleDetails.prototype, {
   setupSummary: function () {
     this.$summary = $('<span class="summary"></span>');
     this.$node
-      .bind('summaryUpdated', $.proxy(this.onSummaryUpdated, this))
+      .on('summaryUpdated', $.proxy(this.onSummaryUpdated, this))
       .trigger('summaryUpdated');
   },
   /**
@@ -60,7 +60,7 @@ $.extend(CollapsibleDetails.prototype, {
       .attr('href', '#' + this.$node.attr('id'))
       .prepend($legend.contents())
       .appendTo($legend)
-      .click($.proxy(this.onLegendClick, this));
+      .on('click', $.proxy(this.onLegendClick, this));
     $legend.append(this.$summary);
   },
   /**
diff --git a/core/misc/form.js b/core/misc/form.js
index d97559d..ff134e2 100644
--- a/core/misc/form.js
+++ b/core/misc/form.js
@@ -31,8 +31,8 @@ $.fn.drupalSetSummary = function (callback) {
     .data('summaryCallback', callback)
     // To prevent duplicate events, the handlers are first removed and then
     // (re-)added.
-    .unbind('formUpdated.summary')
-    .bind('formUpdated.summary', function () {
+    .off('formUpdated.summary')
+    .on('formUpdated.summary', function () {
       self.trigger('summaryUpdated');
     })
     // The actual summaryUpdated handler doesn't fire when the callback is
@@ -53,7 +53,7 @@ Drupal.behaviors.formUpdated = {
       .find(':input').addBack().filter(':input')
       // To prevent duplicate events, the handlers are first removed and then
       // (re-)added.
-      .unbind(events).bind(events, function () {
+      .off(events).on(events, function () {
         $(this).trigger('formUpdated');
       });
   }
diff --git a/core/misc/machine-name.js b/core/misc/machine-name.js
index 9369e85..53ed668 100644
--- a/core/misc/machine-name.js
+++ b/core/misc/machine-name.js
@@ -35,9 +35,9 @@ Drupal.behaviors.machineName = {
       var data = e.data;
       e.preventDefault();
       data.$wrapper.show();
-      data.$target.focus();
+      data.$target.trigger('focus');
       data.$suffix.hide();
-      data.$source.unbind('.machineName');
+      data.$source.off('.machineName');
     }
 
     function machineNameHandler(e) {
@@ -109,16 +109,16 @@ Drupal.behaviors.machineName = {
           options: options
         };
         // If it is editable, append an edit link.
-        var $link = $('<span class="admin-link"><button type="button" class="link">' + Drupal.t('Edit') + '</button></span>').bind('click', eventData, clickEditHandler);
+        var $link = $('<span class="admin-link"><button type="button" class="link">' + Drupal.t('Edit') + '</button></span>').on('click', eventData, clickEditHandler);
         $suffix.append(' ').append($link);
 
         // Preview the machine name in realtime when the human-readable name
         // changes, but only if there is no machine name yet; i.e., only upon
         // initial creation, not when editing.
         if ($target.val() === '') {
-          $source.bind('keyup.machineName change.machineName input.machineName', eventData, machineNameHandler)
+          $source.on('keyup.machineName change.machineName input.machineName', eventData, machineNameHandler)
           // Initialize machine name preview.
-          .keyup();
+          .trigger('keyup');
         }
       }
     }
diff --git a/core/misc/states.js b/core/misc/states.js
index 81f4fcf..c64759f 100644
--- a/core/misc/states.js
+++ b/core/misc/states.js
@@ -118,7 +118,7 @@ states.Dependent.prototype = {
         this.values[selector][state.name] = null;
 
         // Monitor state changes of the specified state for this dependee.
-        $(selector).bind('state:' + state, {selector: selector, state: state}, stateEventHandler);
+        $(selector).on('state:' + state, {selector: selector, state: state}, stateEventHandler);
 
         // Make sure the event we just bound ourselves to is actually fired.
         new states.Trigger({ selector: selector, state: state });
@@ -348,7 +348,7 @@ states.Trigger.prototype = {
     var oldValue = valueFn.call(this.element);
 
     // Attach the event callback.
-    this.element.bind(event, $.proxy(function (e) {
+    this.element.on(event, $.proxy(function (e) {
       var value = valueFn.call(this.element, e);
       // Only trigger the event if the value has actually changed.
       if (oldValue !== value) {
@@ -500,7 +500,7 @@ states.State.prototype = {
  * can override these state change handlers for particular parts of a page.
  */
 
-$(document).bind('state:disabled', function(e) {
+$(document).on('state:disabled', function (e) {
   // Only act when this change was triggered by a dependency and not by the
   // element monitoring itself.
   if (e.trigger) {
@@ -514,7 +514,7 @@ $(document).bind('state:disabled', function(e) {
   }
 });
 
-$(document).bind('state:required', function(e) {
+$(document).on('state:required', function (e) {
   if (e.trigger) {
     if (e.value) {
       $(e.target).attr({ 'required': 'required', 'aria-required': 'aria-required' }).closest('.form-item, .form-wrapper').find('label').append(Drupal.theme('requiredMarker'));
@@ -525,22 +525,22 @@ $(document).bind('state:required', function(e) {
   }
 });
 
-$(document).bind('state:visible', function(e) {
+$(document).on('state:visible', function (e) {
   if (e.trigger) {
     $(e.target).closest('.form-item, .form-submit, .form-wrapper').toggle(e.value);
   }
 });
 
-$(document).bind('state:checked', function(e) {
+$(document).on('state:checked', function (e) {
   if (e.trigger) {
     $(e.target).prop('checked', e.value);
   }
 });
 
-$(document).bind('state:collapsed', function(e) {
+$(document).on('state:collapsed', function (e) {
   if (e.trigger) {
     if ($(e.target).is('[open]') === e.value) {
-      $(e.target).find('> summary a').click();
+      $(e.target).find('> summary a').trigger('click');
     }
   }
 });
diff --git a/core/misc/tabbingmanager.js b/core/misc/tabbingmanager.js
index f212a1d..889067b 100644
--- a/core/misc/tabbingmanager.js
+++ b/core/misc/tabbingmanager.js
@@ -133,7 +133,7 @@ $.extend(TabbingManager.prototype, {
     if ($hasFocus.length === 0) {
       $hasFocus = $set.eq(0);
     }
-    $hasFocus.focus();
+    $hasFocus.trigger('focus');
   },
 
   /**
diff --git a/core/misc/tabledrag.js b/core/misc/tabledrag.js
index 57e48a2..f8dc614 100644
--- a/core/misc/tabledrag.js
+++ b/core/misc/tabledrag.js
@@ -106,7 +106,7 @@ Drupal.tableDrag = function (table, tableSettings) {
   // Add a link before the table for users to show or hide weight columns.
   $table.before($('<button type="button" class="link tabledrag-toggle-weight"></button>')
     .attr('title', Drupal.t('Re-order rows by numerical weight instead of dragging.'))
-    .click($.proxy(function (e) {
+    .on('click', $.proxy(function (e) {
       e.preventDefault();
       this.toggleColumns();
     }, this))
@@ -123,16 +123,16 @@ Drupal.tableDrag = function (table, tableSettings) {
   // Add event bindings to the document. The self variable is passed along
   // as event handlers do not have direct access to the tableDrag object.
   if (Modernizr.touch) {
-    $(document).bind('touchmove', function (event) { return self.dragRow(event.originalEvent.touches[0], self); });
-    $(document).bind('touchend', function (event) { return self.dropRow(event.originalEvent.touches[0], self); });
+    $(document).on('touchmove', function (event) { return self.dragRow(event.originalEvent.touches[0], self); });
+    $(document).on('touchend', function (event) { return self.dropRow(event.originalEvent.touches[0], self); });
   }
   else {
-    $(document).bind('mousemove', function (event) { return self.dragRow(event, self); });
-    $(document).bind('mouseup', function (event) { return self.dropRow(event, self); });
+    $(document).on('mousemove', function (event) { return self.dragRow(event, self); });
+    $(document).on('mouseup', function (event) { return self.dropRow(event, self); });
   }
 
   // React to localStorage event showing or hiding weight columns.
-  $(window).bind('storage', $.proxy(function (e) {
+  $(window).on('storage', $.proxy(function (e) {
     // Only react to 'Drupal.tableDrag.showWeight' value change.
     if (e.originalEvent.key === 'Drupal.tableDrag.showWeight') {
       // This was changed in another window, get the new value for this window.
@@ -332,32 +332,32 @@ Drupal.tableDrag.prototype.makeDraggable = function (item) {
     });
   }
   else {
-    handle.mousedown(function (event) {
+    handle.on('mousedown', function (event) {
       event.preventDefault();
       self.dragStart(event, self, item);
     });
   }
 
   // Prevent the anchor tag from jumping us to the top of the page.
-  handle.click(function (e) {
+  handle.on('click', function (e) {
     e.preventDefault();
   });
 
   // Set blur cleanup when a handle is focused.
-  handle.focus(function () {
+  handle.on('focus', function () {
     self.safeBlur = true;
   });
 
   // On blur, fire the same function as a touchend/mouseup. This is used to
   // update values after a row has been moved through the keyboard support.
-  handle.blur(function (event) {
+  handle.on('blur', function (event) {
     if (self.rowObject && self.safeBlur) {
       self.dropRow(event, self);
     }
   });
 
   // Add arrow-key support to the handle.
-  handle.keydown(function (event) {
+  handle.on('keydown', function (event) {
     // If a rowObject doesn't yet exist and this isn't the tab key.
     if (event.keyCode !== 9 && !self.rowObject) {
       self.rowObject = new self.row(item, 'keyboard', self.indentEnabled, self.maxDepth, true);
@@ -406,7 +406,7 @@ Drupal.tableDrag.prototype.makeDraggable = function (item) {
             self.rowObject.indent(0);
             window.scrollBy(0, -parseInt(item.offsetHeight, 10));
           }
-          handle.get(0).focus(); // Regain focus after the DOM manipulation.
+          handle.trigger('focus'); // Regain focus after the DOM manipulation.
         }
         break;
       case 39: // Right arrow.
@@ -448,7 +448,7 @@ Drupal.tableDrag.prototype.makeDraggable = function (item) {
             self.rowObject.indent(0);
             window.scrollBy(0, parseInt(item.offsetHeight, 10));
           }
-          handle.get(0).focus(); // Regain focus after the DOM manipulation.
+          handle.trigger('focus'); // Regain focus after the DOM manipulation.
         }
         break;
     }
@@ -472,7 +472,7 @@ Drupal.tableDrag.prototype.makeDraggable = function (item) {
   // Compatibility addition, return false on keypress to prevent unwanted scrolling.
   // IE and Safari will suppress scrolling on keydown, but all other browsers
   // need to return false on keypress. http://www.quirksmode.org/js/keys.html
-  handle.keypress(function (event) {
+  handle.on('keypress', function (event) {
     switch (event.keyCode) {
       case 37: // Left arrow.
       case 38: // Up arrow.
@@ -504,7 +504,7 @@ Drupal.tableDrag.prototype.dragStart = function (event, self, item) {
 
   // If there's a lingering row object from the keyboard, remove its focus.
   if (self.rowObject) {
-    $(self.rowObject.element).find('a.tabledrag-handle').blur();
+    $(self.rowObject.element).find('a.tabledrag-handle').trigger('blur');
   }
 
   // Create a new rowObject for manipulation of this row.
diff --git a/core/misc/tableheader.js b/core/misc/tableheader.js
index f1aba96..b22e2a5 100644
--- a/core/misc/tableheader.js
+++ b/core/misc/tableheader.js
@@ -93,7 +93,7 @@ function TableHeader(table) {
   this.tableOffset = this.$originalTable.offset();
 
   // React to columns change to avoid making checks in the scroll callback.
-  this.$originalTable.bind('columnschange', {tableHeader: this}, function (e, display) {
+  this.$originalTable.on('columnschange', {tableHeader: this}, function (e, display) {
     var tableHeader = e.data.tableHeader;
     if (tableHeader.displayWeight === null || tableHeader.displayWeight !== display) {
       tableHeader.recalculateSticky();
diff --git a/core/misc/tableselect.js b/core/misc/tableselect.js
index b3ab4c4..da3a722 100644
--- a/core/misc/tableselect.js
+++ b/core/misc/tableselect.js
@@ -28,7 +28,7 @@ Drupal.tableSelect = function () {
   };
 
   // Find all <th> with class select-all, and insert the check all checkbox.
-  $table.find('th.select-all').prepend($('<input type="checkbox" class="form-checkbox" />').attr('title', strings.selectAll)).click(function (event) {
+  $table.find('th.select-all').prepend($('<input type="checkbox" class="form-checkbox" />').attr('title', strings.selectAll)).on('click', function (event) {
     if ($(event.target).is('input[type="checkbox"]')) {
       // Loop through all checkboxes and set their state to the select all checkbox' state.
       checkboxes.each(function () {
@@ -42,7 +42,7 @@ Drupal.tableSelect = function () {
   });
 
   // For each of the checkboxes within the table that are not disabled.
-  checkboxes = $table.find('td input[type="checkbox"]:enabled').click(function (e) {
+  checkboxes = $table.find('td input[type="checkbox"]:enabled').on('click', function (e) {
     // Either add or remove the selected class based on the state of the check all checkbox.
     $(this).closest('tr').toggleClass('selected', this.checked);
 
diff --git a/core/misc/vertical-tabs.js b/core/misc/vertical-tabs.js
index a02fa2c..d45bcac 100644
--- a/core/misc/vertical-tabs.js
+++ b/core/misc/vertical-tabs.js
@@ -90,24 +90,24 @@ Drupal.verticalTab = function (settings) {
 
   this.link.attr('href', '#' + settings.details.attr('id'));
 
-  this.link.click(function (e) {
+  this.link.on('click', function (e) {
     e.preventDefault();
     self.focus();
   });
 
   // Keyboard events added:
   // Pressing the Enter key will open the tab pane.
-  this.link.keydown(function(event) {
+  this.link.on('keydown', function (event) {
     event.preventDefault();
     if (event.keyCode === 13) {
       self.focus();
       // Set focus on the first input field of the visible details/tab pane.
-      $(".vertical-tabs-pane :input:visible:enabled:first").focus();
+      $(".vertical-tabs-pane :input:visible:enabled:first").trigger('focus');
     }
   });
 
   this.details
-    .bind('summaryUpdated', function () {
+    .on('summaryUpdated', function () {
       self.updateSummary();
     })
     .trigger('summaryUpdated');
diff --git a/core/modules/block/block.js b/core/modules/block/block.js
index 7025ce1..9ff920d 100644
--- a/core/modules/block/block.js
+++ b/core/modules/block/block.js
@@ -78,7 +78,7 @@ Drupal.behaviors.blockDrag = {
         window.alert(Drupal.t('The block cannot be placed in this region.'));
         // Simulate that there was a selected element change, so the row is put
         // back to from where the user tried to drag it.
-        regionField.change();
+        regionField.trigger('change');
       }
       else if ($rowElement.prev('tr').is('.region-message')) {
         var weightField = $rowElement.find('select.block-weight');
@@ -94,7 +94,7 @@ Drupal.behaviors.blockDrag = {
 
     // Add the behavior to each region select list.
     $(context).find('select.block-region-select').once('block-region-select', function () {
-      $(this).change(function (event) {
+      $(this).on('change', function (event) {
         // Make our new row and select field.
         var row = $(this).closest('tr');
         var select = $(this);
@@ -106,7 +106,7 @@ Drupal.behaviors.blockDrag = {
         // Modify empty regions with added or removed fields.
         checkEmptyRegions(table, row);
         // Remove focus from selectbox.
-        select.get(0).blur();
+        select.trigger('blur');
       });
     });
 
diff --git a/core/modules/ckeditor/js/ckeditor.admin.js b/core/modules/ckeditor/js/ckeditor.admin.js
index 7d41680..9e0735c 100644
--- a/core/modules/ckeditor/js/ckeditor.admin.js
+++ b/core/modules/ckeditor/js/ckeditor.admin.js
@@ -536,7 +536,7 @@ Drupal.ckeditor = {
         if (success) {
           $group.appendTo($(event.currentTarget).closest('.ckeditor-row').children('.ckeditor-toolbar-groups'));
           // Focus on the new group.
-          $group.focus();
+          $group.trigger('focus');
         }
       }
 
@@ -574,7 +574,7 @@ Drupal.ckeditor = {
      *   elements involved in the sort action.
      */
     startButtonDrag: function (event, ui) {
-      this.$el.find('a:focus').blur();
+      this.$el.find('a:focus').trigger('blur');
 
       // Show the button group names as soon as the user starts dragging.
       this.model.set('groupNamesVisible', true);
@@ -597,7 +597,7 @@ Drupal.ckeditor = {
         }
         // Refocus the target button so that the user can continue from a known
         // place.
-        ui.item.find('a').focus();
+        ui.item.find('a').trigger('focus');
       });
     },
 
@@ -809,7 +809,7 @@ Drupal.ckeditor = {
                   .off()
                   .remove();
                 // Focus on the first button in the active toolbar.
-                $activeButtons.find('.ckeditor-toolbar-group-buttons').eq(0).children().eq(0).children().focus();
+                $activeButtons.find('.ckeditor-toolbar-group-buttons').eq(0).children().eq(0).children().trigger('focus');
               }
               // Otherwise, move it.
               else {
@@ -852,7 +852,7 @@ Drupal.ckeditor = {
           }
           // Refocus the target button so that the user can continue from a known
           // place.
-          $target.focus();
+          $target.trigger('focus');
         });
 
         event.preventDefault();
@@ -933,7 +933,7 @@ Drupal.ckeditor = {
         }
 
         registerGroupMove(this, $group);
-        $group.focus();
+        $group.trigger('focus');
         event.preventDefault();
         event.stopPropagation();
       }
@@ -1410,7 +1410,7 @@ function openGroupNameDialog (view, $group, callback) {
     // When editing, set the "group name" input in the form to the current value.
     .attr('value', $group.attr('data-drupal-ckeditor-toolbar-group-name'))
     // Focus on the "group name" input in the form.
-    .focus();
+    .trigger('focus');
 }
 
 /**
diff --git a/core/modules/color/color.js b/core/modules/color/color.js
index ca74657..704fc1c 100644
--- a/core/modules/color/color.js
+++ b/core/modules/color/color.js
@@ -55,7 +55,7 @@ Drupal.behaviors.color = {
     }
 
     // Set up colorScheme selector.
-    form.find('#edit-scheme').change(function () {
+    form.find('#edit-scheme').on('change', function () {
       var schemes = settings.color.schemes, colorScheme = this.options[this.selectedIndex].value;
       if (colorScheme !== '' && schemes[colorScheme]) {
         // Get colors of active scheme.
@@ -184,8 +184,8 @@ Drupal.behaviors.color = {
       var input = e.target;
       // Remove old bindings.
       if (focused) {
-        $(focused).unbind('keyup', farb.updateValue)
-          .unbind('keyup', preview).unbind('keyup', resetScheme)
+        $(focused).off('keyup', farb.updateValue)
+          .off('keyup', preview).off('keyup', resetScheme)
           .parent().removeClass('item-selected');
       }
 
@@ -193,7 +193,7 @@ Drupal.behaviors.color = {
       focused = input;
       farb.linkTo(function (color) { callback(input, color, true, false); });
       farb.setColor(input.value);
-      $(focused).keyup(farb.updateValue).keyup(preview).keyup(resetScheme)
+      $(focused).on('keyup', farb.updateValue).on('keyup', preview).on('keyup', resetScheme)
         .parent().addClass('item-selected');
     }
 
@@ -240,11 +240,11 @@ Drupal.behaviors.color = {
       $(this).after(hook);
       hooks.push(hook);
 
-      $(this).parent().find('.lock').click();
+      $(this).parent().find('.lock').trigger('click');
       this.i = i;
       inputs.push(this);
     })
-    .focus(focus);
+    .on('focus', focus);
 
     form.find('#palette label');
 
diff --git a/core/modules/editor/js/editor.js b/core/modules/editor/js/editor.js
index 18493d6..c1cdcbc 100644
--- a/core/modules/editor/js/editor.js
+++ b/core/modules/editor/js/editor.js
@@ -55,7 +55,7 @@ Drupal.behaviors.editor = {
         });
       }
       // Detach any editor when the containing form is submitted.
-      $this.parents('form').submit(function (event) {
+      $this.parents('form').on('submit', function (event) {
         // Do not detach if the event was canceled.
         if (event.isDefaultPrevented()) {
           return;
diff --git a/core/modules/field_ui/field_ui.js b/core/modules/field_ui/field_ui.js
index 2955bf9..9297462 100644
--- a/core/modules/field_ui/field_ui.js
+++ b/core/modules/field_ui/field_ui.js
@@ -157,7 +157,7 @@ Drupal.fieldUIOverview = {
 
       // Fire the Ajax update.
       $('input[name=refresh_rows]').val(rowNames.join(' '));
-      $('input#edit-refresh').mousedown();
+      $('input#edit-refresh').trigger('mousedown');
 
       // Disabled elements do not appear in POST ajax data, so we mark the
       // elements disabled only after firing the request.
@@ -190,7 +190,7 @@ Drupal.fieldUIDisplayOverview.field = function (row, data) {
 
   // Attach change listener to the 'plugin type' select.
   this.$pluginSelect = $(row).find('select.field-plugin-type');
-  this.$pluginSelect.change(Drupal.fieldUIOverview.onChange);
+  this.$pluginSelect.on('change', Drupal.fieldUIOverview.onChange);
 
   return this;
 };
diff --git a/core/modules/file/file.js b/core/modules/file/file.js
index df1c3b1..c7c6362 100644
--- a/core/modules/file/file.js
+++ b/core/modules/file/file.js
@@ -23,7 +23,7 @@ Drupal.behaviors.fileValidateAutoAttach = {
       elements = settings.file.elements;
       for (selector in elements) {
         if (elements.hasOwnProperty(selector)) {
-          $context.find(selector).bind('change', {extensions: elements[selector]}, validateExtension);
+          $context.find(selector).on('change', {extensions: elements[selector]}, validateExtension);
         }
       }
     }
@@ -36,7 +36,7 @@ Drupal.behaviors.fileValidateAutoAttach = {
       elements = settings.file.elements;
       for (selector in elements) {
         if (elements.hasOwnProperty(selector)) {
-          $context.find(selector).unbind('change', validateExtension);
+          $context.find(selector).off('change', validateExtension);
         }
       }
     }
@@ -63,13 +63,13 @@ Drupal.behaviors.fileAutoUpload = {
 Drupal.behaviors.fileButtons = {
   attach: function (context) {
     var $context = $(context);
-    $context.find('input.form-submit').bind('mousedown', Drupal.file.disableFields);
-    $context.find('div.form-managed-file input.form-submit').bind('mousedown', Drupal.file.progressBar);
+    $context.find('input.form-submit').on('mousedown', Drupal.file.disableFields);
+    $context.find('div.form-managed-file input.form-submit').on('mousedown', Drupal.file.progressBar);
   },
   detach: function (context) {
     var $context = $(context);
-    $context.find('input.form-submit').unbind('mousedown', Drupal.file.disableFields);
-    $context.find('div.form-managed-file input.form-submit').unbind('mousedown', Drupal.file.progressBar);
+    $context.find('input.form-submit').off('mousedown', Drupal.file.disableFields);
+    $context.find('div.form-managed-file input.form-submit').off('mousedown', Drupal.file.progressBar);
   }
 };
 
@@ -78,10 +78,10 @@ Drupal.behaviors.fileButtons = {
  */
 Drupal.behaviors.filePreviewLinks = {
   attach: function (context) {
-    $(context).find('div.form-managed-file .file a, .file-widget .file a').bind('click',Drupal.file.openInNewWindow);
+    $(context).find('div.form-managed-file .file a, .file-widget .file a').on('click',Drupal.file.openInNewWindow);
   },
   detach: function (context){
-    $(context).find('div.form-managed-file .file a, .file-widget .file a').unbind('click', Drupal.file.openInNewWindow);
+    $(context).find('div.form-managed-file .file a, .file-widget .file a').off('click', Drupal.file.openInNewWindow);
   }
 };
 
diff --git a/core/modules/filter/filter.admin.js b/core/modules/filter/filter.admin.js
index b440fae..cde65a5 100644
--- a/core/modules/filter/filter.admin.js
+++ b/core/modules/filter/filter.admin.js
@@ -20,7 +20,7 @@ Drupal.behaviors.filterStatus = {
 
       // Bind click handler to this checkbox to conditionally show and hide the
       // filter's tableDrag row and vertical tab pane.
-      $checkbox.bind('click.filterUpdate', function () {
+      $checkbox.on('click.filterUpdate', function () {
         if ($checkbox.is(':checked')) {
           $row.show();
           if (filterSettingsTab) {
diff --git a/core/modules/filter/filter.js b/core/modules/filter/filter.js
index 4bc8c18..9ee5f74 100644
--- a/core/modules/filter/filter.js
+++ b/core/modules/filter/filter.js
@@ -15,12 +15,12 @@ Drupal.behaviors.filterGuidelines = {
     $(context).find('.filter-guidelines').once('filter-guidelines')
       .find(':header').hide()
       .closest('.filter-wrapper').find('select.filter-list')
-      .bind('change', function () {
+      .on('change', function () {
         $(this).closest('.filter-wrapper')
           .find('.filter-guidelines-item').hide()
           .siblings('.filter-guidelines-' + this.value).show();
       })
-      .change();
+      .trigger('change');
   }
 };
 
diff --git a/core/modules/menu/menu.js b/core/modules/menu/menu.js
index 77baddb..c9e14b5 100644
--- a/core/modules/menu/menu.js
+++ b/core/modules/menu/menu.js
@@ -39,7 +39,7 @@ Drupal.behaviors.menuLinkAutomaticTitle = {
         $link_title.data('menuLinkAutomaticTitleOveridden', true);
       }
       // Whenever the value is changed manually, disable this behavior.
-      $link_title.keyup(function () {
+      $link_title.on('keyup', function () {
         $link_title.data('menuLinkAutomaticTitleOveridden', true);
       });
       // Global trigger on checkbox (do not fill-in a value when disabled).
@@ -57,7 +57,7 @@ Drupal.behaviors.menuLinkAutomaticTitle = {
         $checkbox.trigger('formUpdated');
       });
       // Take over any title change.
-      $title.keyup(function () {
+      $title.on('keyup', function () {
         if (!$link_title.data('menuLinkAutomaticTitleOveridden') && $checkbox.is(':checked')) {
           $link_title.val($title.val());
           $link_title.val($title.val()).trigger('formUpdated');
diff --git a/core/modules/overlay/overlay-child.js b/core/modules/overlay/overlay-child.js
index cd7cdee..4374e80 100644
--- a/core/modules/overlay/overlay-child.js
+++ b/core/modules/overlay/overlay-child.js
@@ -67,11 +67,11 @@ Drupal.behaviors.overlayChild = {
     // overlay and how to disable it. Make sure both links are visible when
     // either one has focus and add a class to the wrapper for styling purposes.
     $(context).find('#overlay-disable-message')
-      .focusin(function () {
+      .on('focusin', function () {
         $(this).addClass('overlay-disable-message-focused')
           .find('a.focusable').removeClass('visually-hidden');
       })
-      .focusout(function () {
+      .on('focusout', function () {
         $(this).removeClass('overlay-disable-message-focused')
           .find('a.focusable').addClass('visually-hidden');
       });
@@ -107,7 +107,7 @@ Drupal.overlayChild.attachBehaviors = function (context, settings) {
  * to bind their own handlers to links and also to prevent overlay's handling.
  */
 Drupal.overlayChild.behaviors.addClickHandler = function (context, settings) {
-  $(document).bind('click.drupal-overlay mouseup.drupal-overlay', $.proxy(parent.Drupal.overlay, 'eventhandlerOverrideLink'));
+  $(document).on('click.drupal-overlay mouseup.drupal-overlay', $.proxy(parent.Drupal.overlay, 'eventhandlerOverrideLink'));
 };
 
 /**
@@ -140,7 +140,7 @@ Drupal.overlayChild.behaviors.loading = function (context, settings) {
   var text = Drupal.t('Loading');
   var dots = '';
 
-  $(document).bind('drupalOverlayBeforeLoad.drupal-overlay.drupal-overlay-child-loading', function () {
+  $(document).on('drupalOverlayBeforeLoad.drupal-overlay.drupal-overlay-child-loading', function () {
     $title = $('#overlay-title').text(text);
     setInterval(function () {
       dots = (dots.length > 10) ? '' : dots + '.';
@@ -155,7 +155,7 @@ Drupal.overlayChild.behaviors.loading = function (context, settings) {
 Drupal.overlayChild.behaviors.tabs = function (context, settings) {
   var $tabsLinks = $('#overlay-tabs > li > a');
 
-  $('#overlay-tabs > li > a').bind('click.drupal-overlay', function () {
+  $('#overlay-tabs > li > a').on('click.drupal-overlay', function () {
     var active_tab = Drupal.t('(active tab)');
     $tabsLinks.parent().siblings().removeClass('active').find('visually-hidden:contains(' + active_tab + ')').appendTo(this);
     $(this).parent().addClass('active');
@@ -174,7 +174,7 @@ Drupal.overlayChild.behaviors.shortcutAddLink = function (context, settings) {
     $addToShortcuts.insertAfter('#overlay-title');
   }
 
-  $(document).bind('drupalOverlayBeforeLoad.drupal-overlay.drupal-overlay-child-loading', function () {
+  $(document).on('drupalOverlayBeforeLoad.drupal-overlay.drupal-overlay-child-loading', function () {
     $('#overlay-titlebar').find('.add-or-remove-shortcuts').remove();
   });
 };
diff --git a/core/modules/overlay/overlay-parent.js b/core/modules/overlay/overlay-parent.js
index ae1d5b8..999966c 100644
--- a/core/modules/overlay/overlay-parent.js
+++ b/core/modules/overlay/overlay-parent.js
@@ -19,7 +19,7 @@ Drupal.behaviors.overlayParent = {
 
     $(window)
       // When the hash (URL fragment) changes, open the overlay if needed.
-      .bind('hashchange.drupal-overlay', $.proxy(Drupal.overlay, 'eventhandlerOperateByURLFragment'))
+      .on('hashchange.drupal-overlay', $.proxy(Drupal.overlay, 'eventhandlerOperateByURLFragment'))
       // Trigger the hashchange handler once, after the page is loaded, so that
       // permalinks open the overlay.
       .triggerHandler('hashchange.drupal-overlay');
@@ -35,7 +35,7 @@ Drupal.behaviors.overlayParent = {
       // the document and only handle events that bubble up. This allows other
       // scripts to bind their own handlers to links and also to prevent
       // overlay's handling.
-      .bind('click.drupal-overlay mouseup.drupal-overlay', $.proxy(Drupal.overlay, 'eventhandlerOverrideLink'));
+      .on('click.drupal-overlay mouseup.drupal-overlay', $.proxy(Drupal.overlay, 'eventhandlerOverrideLink'));
   }
 };
 
@@ -121,27 +121,27 @@ Drupal.overlay.create = function () {
   this.inactiveFrame = this.$iframeB = $(Drupal.theme('overlayElement'))
     .appendTo(this.$container);
 
-  this.$iframeA.bind('load.drupal-overlay', { self: this.$iframeA[0], sibling: this.$iframeB }, $.proxy(this, 'loadChild'));
-  this.$iframeB.bind('load.drupal-overlay', { self: this.$iframeB[0], sibling: this.$iframeA }, $.proxy(this, 'loadChild'));
+  this.$iframeA.on('load.drupal-overlay', { self: this.$iframeA[0], sibling: this.$iframeB }, $.proxy(this, 'loadChild'));
+  this.$iframeB.on('load.drupal-overlay', { self: this.$iframeB[0], sibling: this.$iframeA }, $.proxy(this, 'loadChild'));
 
   // Add a second class "drupal-overlay-open" to indicate these event handlers
   // should only be bound when the overlay is open.
   var eventClass = '.drupal-overlay.drupal-overlay-open';
   $(window)
-    .bind('resize' + eventClass, $.proxy(this, 'eventhandlerOuterResize'));
+    .on('resize' + eventClass, $.proxy(this, 'eventhandlerOuterResize'));
   $(document)
-    .bind('drupalViewportOffsetChange' + eventClass, $.proxy(this, 'eventhandlerViewportOffsetChange'))
-    .bind('drupalOverlayLoad' + eventClass, $.proxy(this, 'eventhandlerOuterResize'))
-    .bind('drupalOverlayReady' + eventClass +
+    .on('drupalViewportOffsetChange' + eventClass, $.proxy(this, 'eventhandlerViewportOffsetChange'))
+    .on('drupalOverlayLoad' + eventClass, $.proxy(this, 'eventhandlerOuterResize'))
+    .on('drupalOverlayReady' + eventClass +
           ' drupalOverlayClose' + eventClass, $.proxy(this, 'eventhandlerSyncURLFragment'))
-    .bind('drupalOverlayClose' + eventClass, $.proxy(this, 'eventhandlerRefreshPage'))
-    .bind('drupalOverlayBeforeClose' + eventClass +
+    .on('drupalOverlayClose' + eventClass, $.proxy(this, 'eventhandlerRefreshPage'))
+    .on('drupalOverlayBeforeClose' + eventClass +
           ' drupalOverlayBeforeLoad' + eventClass +
           ' drupalOverlayResize' + eventClass, $.proxy(this, 'eventhandlerDispatchEvent'));
 
   $(document)
-    .bind('drupalOverlayResize' + eventClass, $.proxy(this, 'eventhandlerAlterDisplacedElements'))
-    .bind('drupalOverlayClose' + eventClass, $.proxy(this, 'eventhandlerRestoreDisplacedElements'));
+    .on('drupalOverlayResize' + eventClass, $.proxy(this, 'eventhandlerAlterDisplacedElements'))
+    .on('drupalOverlayClose' + eventClass, $.proxy(this, 'eventhandlerRestoreDisplacedElements'));
 };
 
 /**
@@ -218,7 +218,7 @@ Drupal.overlay.close = function () {
  * Destroy the overlay.
  */
 Drupal.overlay.destroy = function () {
-  $([document, window]).unbind('.drupal-overlay-open');
+  $([document, window]).off('.drupal-overlay-open');
   this.$container.remove();
 
   this.$container = null;
diff --git a/core/modules/shortcut/shortcut.admin.js b/core/modules/shortcut/shortcut.admin.js
index 7cad31f..c95e4fd 100644
--- a/core/modules/shortcut/shortcut.admin.js
+++ b/core/modules/shortcut/shortcut.admin.js
@@ -11,7 +11,7 @@ Drupal.behaviors.newSet = {
     var selectDefault = function() {
       $(this).closest('form').find('.form-item-set .form-type-radio:last input').prop('checked', true);
     };
-    $('div.form-item-new input').focus(selectDefault).keyup(selectDefault);
+    $('div.form-item-new input').on('focus', selectDefault).on('keyup', selectDefault);
   }
 };
 
diff --git a/core/modules/simpletest/simpletest.js b/core/modules/simpletest/simpletest.js
index 7049358..aa422ed 100644
--- a/core/modules/simpletest/simpletest.js
+++ b/core/modules/simpletest/simpletest.js
@@ -15,7 +15,7 @@ Drupal.behaviors.simpleTestMenuCollapse = {
       $this.html(drupalSettings.simpleTest.images[direction]);
 
       // Adds group toggling functionality to arrow images.
-      $this.click(function () {
+      $this.on('click', function () {
         var trs = $this.closest('tbody').children('.' + drupalSettings.simpleTest[this.id].testClass);
         var direction = drupalSettings.simpleTest[this.id].imageDirection;
         var row = direction ? trs.length - 1 : 0;
@@ -80,7 +80,7 @@ Drupal.behaviors.simpleTestSelectAll = {
       }
 
       // Have the single-test checkboxes follow the group checkbox.
-      groupCheckbox.change(function () {
+      groupCheckbox.on('change', function () {
         var checked = $(this).prop('checked');
         for (var i = 0; i < testCheckboxes.length; i++) {
           $('#' + testCheckboxes[i]).prop('checked', checked);
@@ -89,7 +89,7 @@ Drupal.behaviors.simpleTestSelectAll = {
 
       // Have the group checkbox follow the single-test checkboxes.
       for (var i = 0; i < testCheckboxes.length; i++) {
-        $('#' + testCheckboxes[i]).change(updateGroupCheckbox);
+        $('#' + testCheckboxes[i]).on('change', updateGroupCheckbox);
       }
 
       // Initialize status for the group checkbox correctly.
diff --git a/core/modules/text/text.js b/core/modules/text/text.js
index 347b6e8..78a180a 100644
--- a/core/modules/text/text.js
+++ b/core/modules/text/text.js
@@ -42,7 +42,7 @@ Drupal.behaviors.textSummary = {
 
       // If no summary is set, hide the summary field.
       if ($widget.find('.text-summary').val() === '') {
-        $link.click();
+        $link.trigger('click');
       }
     });
   }
diff --git a/core/modules/user/user.js b/core/modules/user/user.js
index 564cebd..7b1ccfa 100644
--- a/core/modules/user/user.js
+++ b/core/modules/user/user.js
@@ -180,7 +180,7 @@ Drupal.behaviors.fieldUserRegistration = {
 
     if ($checkbox.length) {
       $(context).find('input#edit-instance-required').once('user-register-form-checkbox', function () {
-        $(this).bind('change', function (e) {
+        $(this).on('change', function (e) {
           if ($(this).prop('checked')) {
             $checkbox.prop('checked', true);
           }
diff --git a/core/modules/user/user.permissions.js b/core/modules/user/user.permissions.js
index 15658a9..850dd88 100644
--- a/core/modules/user/user.permissions.js
+++ b/core/modules/user/user.permissions.js
@@ -41,7 +41,7 @@ Drupal.behaviors.permissions = {
 
       // Initialize the authenticated user checkbox.
       $table.find('input[type=checkbox].rid-authenticated')
-        .bind('click.permissions', self.toggle)
+        .on('click.permissions', self.toggle)
         // .triggerHandler() cannot be used here, as it only affects the first
         // element.
         .each(self.toggle);
diff --git a/core/modules/views_ui/js/ajax.js b/core/modules/views_ui/js/ajax.js
index 0b416c9..6afef7a 100644
--- a/core/modules/views_ui/js/ajax.js
+++ b/core/modules/views_ui/js/ajax.js
@@ -51,9 +51,9 @@
    */
   Drupal.behaviors.livePreview = {
     attach: function (context) {
-      $('input#edit-displays-live-preview', context).once('views-ajax-processed').click(function() {
+      $('input#edit-displays-live-preview', context).once('views-ajax').on('click', function () {
         if ($(this).is(':checked')) {
-          $('#preview-submit').click();
+          $('#preview-submit').trigger('click');
         }
       });
     }
@@ -64,13 +64,13 @@
    */
   Drupal.behaviors.syncPreviewDisplay = {
     attach: function (context) {
-      $("#views-tabset a").once('views-ajax-processed').click(function() {
+      $("#views-tabset a").once('views-ajax').on('click', function () {
         var href = $(this).attr('href');
         // Cut of #views-tabset.
         var display_id = href.substr(11);
         // Set the form element.
         $("#views-live-preview #preview-display-id").val(display_id);
-      }).addClass('views-ajax-processed');
+      });
     }
   };
 
@@ -82,7 +82,7 @@
         'progress': { 'type': 'throbber' }
       };
       // Bind AJAX behaviors to all items showing the class.
-      $('a.views-ajax-link', context).once('views-ajax-processed').each(function () {
+      $('a.views-ajax-link', context).once('views-ajax').each(function () {
         var element_settings = base_element_settings;
         // Set the URL to go to the anchor.
         if ($(this).attr('href')) {
@@ -93,7 +93,7 @@
       });
 
       $('div#views-live-preview a')
-        .once('views-ajax-processed').each(function () {
+        .once('views-ajax').each(function () {
         // We don't bind to links without a URL.
         if (!$(this).attr('href')) {
           return true;
@@ -117,8 +117,8 @@
       // @todo Revisit this after fixing Views UI to display a Preview outside
       //   of the main Edit form.
       $('div#views-live-preview input[type=submit]')
-        .once('views-ajax-processed').each(function(event) {
-        $(this).click(function () {
+        .once('views-ajax').each(function(event) {
+        $(this).on('click', function () {
           this.form.clk = this;
           return true;
         });
diff --git a/core/modules/views_ui/js/views-admin.js b/core/modules/views_ui/js/views-admin.js
index ee70f1f..c1bf873 100644
--- a/core/modules/views_ui/js/views-admin.js
+++ b/core/modules/views_ui/js/views-admin.js
@@ -307,7 +307,7 @@ Drupal.viewsUi.OptionsSearch = function ($form) {
   this.$form = $form;
   // Add a keyup handler to the search box.
   this.$searchBox = this.$form.find('#edit-override-controls-options-search');
-  this.$searchBox.keyup($.proxy(this.handleKeyup, this));
+  this.$searchBox.on('keyup', $.proxy(this.handleKeyup, this));
   // Get a list of option labels and their corresponding divs and maintain it
   // in memory, so we have as little overhead as possible at keyup time.
   this.options = this.getOptions(this.$form.find('.filterable-option'));
@@ -856,7 +856,7 @@ Drupal.viewsUi.Checkboxifier = function (button) {
   this.$button.hide();
   this.$parent.find('.exposed-description, .grouped-description').hide();
 
-  this.$input.click($.proxy(this, 'clickHandler'));
+  this.$input.on('click', $.proxy(this, 'clickHandler'));
 
 };
 
@@ -864,8 +864,9 @@ Drupal.viewsUi.Checkboxifier = function (button) {
  * When the checkbox is checked or unchecked, simulate a button press.
  */
 Drupal.viewsUi.Checkboxifier.prototype.clickHandler = function (e) {
-  this.$button.mousedown();
-  this.$button.submit();
+  this.$button
+    .trigger('mousedown')
+    .trigger('submit');
 };
 
 /**
