diff --git a/js/misc/batch.js b/js/misc/batch.js
index a424305..70af6c6 100644
--- a/js/misc/batch.js
+++ b/js/misc/batch.js
@@ -3,7 +3,7 @@
  * Drupal's batch API.
  */
 
-(function ($, Drupal) {
+(function ($, Drupal, once) {
   'use strict';
 
   /**
@@ -14,7 +14,7 @@
   Drupal.behaviors.batch = {
     attach: function (context, settings) {
       var batch = settings.batch;
-      var $progress = $('[data-drupal-progress]').once('batch');
+      var $progress = $(once('batch', '[data-drupal-progress]', context));
       var progressBar;
 
       // Success: redirect to the summary.
@@ -40,4 +40,4 @@
     }
   };
 
-})(jQuery, Drupal);
+})(jQuery, Drupal, once);
diff --git a/js/misc/form.js b/js/misc/form.js
index 0b09d16..9712243 100644
--- a/js/misc/form.js
+++ b/js/misc/form.js
@@ -3,7 +3,7 @@
  * Extends methods from core/misc/form.js.
  */
 
-(function ($, window, Drupal, drupalSettings) {
+(function ($, window, Drupal, drupalSettings, once) {
 
   /**
    * Behavior for "forms_has_error_value_toggle" theme setting.
@@ -12,7 +12,7 @@
     attach: function (context) {
       if (drupalSettings.bootstrap && drupalSettings.bootstrap.forms_has_error_value_toggle) {
         var $context = $(context);
-        $context.find('.form-item.has-error:not(.form-type-password.has-feedback)').once('error').each(function () {
+        $(once('error', '.form-item.has-error:not(.form-type-password.has-feedback)', context)).each(function () {
           var $formItem = $(this);
           var $input = $formItem.find(':input');
           $input.on('keyup focus blur', function () {
@@ -27,4 +27,4 @@
   };
 
 
-})(jQuery, this, Drupal, drupalSettings);
+})(jQuery, this, Drupal, drupalSettings, once);
diff --git a/js/misc/vertical-tabs.js b/js/misc/vertical-tabs.js
index 83cfec4..950801c 100644
--- a/js/misc/vertical-tabs.js
+++ b/js/misc/vertical-tabs.js
@@ -3,7 +3,7 @@
  * Overrides core/misc/vertical-tabs.js.
  */
 
-(function ($, window, Drupal, drupalSettings) {
+(function ($, window, Drupal, drupalSettings, once) {
   "use strict";
 
   /**
@@ -46,9 +46,9 @@
       /**
        * Binds a listener to handle fragment link clicks and URL hash changes.
        */
-      $('body').once('vertical-tabs-fragments').on('formFragmentLinkClickOrHashChange.verticalTabs', handleFragmentLinkClickOrHashChange);
+      $(once('vertical-tabs-fragments', 'body')).on('formFragmentLinkClickOrHashChange.verticalTabs', handleFragmentLinkClickOrHashChange);
 
-      $(context).find('[data-vertical-tabs-panes]').once('vertical-tabs').each(function () {
+      $(once('vertical-tabs', '[data-vertical-tabs-panes]', context)).each(function () {
         var $this = $(this).addClass('tab-content vertical-tabs-panes');
 
         var focusID = $(':hidden.vertical-tabs__active-tab', this).val();
@@ -110,7 +110,7 @@
 
       // Provide some Bootstrap tab/Drupal integration.
       // @todo merge this into the above code from core.
-      $(context).find('.tabbable').once('bootstrap-tabs').each(function () {
+      $(once('bootstrap-tabs', '.tabbable', context)).each(function () {
         var $wrapper = $(this);
         var $tabs = $wrapper.find('.nav-tabs');
         var $content = $wrapper.find('.tab-content');
@@ -286,4 +286,4 @@
     return tab;
   };
 
-})(jQuery, this, Drupal, drupalSettings);
+})(jQuery, this, Drupal, drupalSettings, once);
diff --git a/js/modules/filter/filter.js b/js/modules/filter/filter.js
index 34d8488..29599fa 100644
--- a/js/modules/filter/filter.js
+++ b/js/modules/filter/filter.js
@@ -3,7 +3,7 @@
  * Attaches behavior for the Filter module.
  */
 
-(function ($) {
+(function ($, once) {
   'use strict';
 
   function updateFilterHelpLink () {
@@ -28,8 +28,8 @@
    */
   Drupal.behaviors.filterGuidelines = {
     attach: function (context) {
-      $(context).find('.filter-wrapper select.filter-list').once('filter-list').each(updateFilterHelpLink);
+      $(once('filter-list', '.filter-wrapper select.filter-list', context)).each(updateFilterHelpLink);
     }
   };
 
-})(jQuery);
+})(jQuery, once);
diff --git a/js/text/text.js b/js/text/text.js
index 7665919..5df0639 100644
--- a/js/text/text.js
+++ b/js/text/text.js
@@ -3,7 +3,7 @@
  * Text behaviors.
  */
 
-(function ($) {
+(function ($, Drupal, once) {
 
   'use strict';
 
@@ -17,7 +17,7 @@
    */
   Drupal.behaviors.textSummary = {
     attach: function (context, settings) {
-      $(context).find('.js-text-summary').once('text-summary').each(function () {
+      $(once('text-summary', '.js-text-summary', context)).each(function () {
         var $widget = $(this).closest('.js-text-format-wrapper');
 
         var $summary = $widget.find('.js-text-summary-wrapper');
@@ -62,4 +62,4 @@
     }
   };
 
-})(jQuery);
+})(jQuery, Drupal, once);
diff --git a/js/theme-settings.js b/js/theme-settings.js
index d008a2e..ef5605d 100644
--- a/js/theme-settings.js
+++ b/js/theme-settings.js
@@ -1,4 +1,4 @@
-(function ($, Drupal, Bootstrap) {
+(function ($, Drupal, Bootstrap, once) {
   /*global jQuery:false */
   /*global Drupal:false */
   "use strict";
@@ -60,7 +60,7 @@
 
       // JavaScript.
       var $jQueryUiBridge = $context.find('input[name="modal_jquery_ui_bridge"]');
-      $jQueryUiBridge.once('bs.jquery.ui.dialog.bridge').each(function () {
+      $(once('bs.jquery.ui.dialog.bridge', 'input[name="modal_jquery_ui_bridge"]', context)).each(function () {
         $jQueryUiBridge
           .off('change.bs.jquery.ui.dialog.bridge')
           .on('change.bs.jquery.ui.dialog.bridge', function (e) {
@@ -181,7 +181,7 @@
     attach: function (context) {
       var $context = $(context);
       var $preview = $context.find('#bootstrap-theme-preview');
-      $preview.once('bootstrap-theme-preview').each(function () {
+      $(once('bootstrap-theme-preview', '#bootstrap-theme-preview', context)).each(function () {
         // Construct the "Bootstrap Theme" preview here since it's not actually
         // a Bootswatch theme, but rather one provided by Bootstrap itself.
         // Unfortunately getbootstrap.com does not have HTTPS enabled, so the
@@ -221,7 +221,7 @@
     attach: function (context) {
       var $context = $(context);
       var $container = $context.find('#edit-container');
-      $container.once('container-preview').each(function () {
+      $(once('container-preview', '#edit-container', context)).each(function () {
         $container.find('[name="fluid_container"]').on('change.bootstrap', function () {
           if ($(this).is(':checked')) {
             $context.find('.container').removeClass('container').addClass('container-fluid');
@@ -241,7 +241,7 @@
     attach: function (context) {
       var $context = $(context);
       var $preview = $context.find('#edit-navbar');
-      $preview.once('navbar').each(function () {
+      $(once('navbar', '#edit-navbar', context)).each(function () {
         var $body = $context.find('body');
         var $navbar = $context.find('#navbar.navbar');
         $preview.find('select[name="navbar_position"]').bind('change', function () {
@@ -276,4 +276,4 @@
     }
   };
 
-})(jQuery, Drupal, Drupal.bootstrap);
+})(jQuery, Drupal, Drupal.bootstrap, once);
