title: Woocommerce TypeError: $(...).on is not a function
body: <p>I have a problem with <code>add to cart</code> button on variable products. When I look at errors via Firebug I see the following error : </p>
  
  <pre><code>TypeError: $(...).on is not a function
  $( document ).on( 'click', '.add_to_cart_button', function() {
  Location : plugins/woocommerce/assets/js/frontend/add-to-cart.js?ver=2.1.12
  </code></pre>
  
  <p><a href="http://i.stack.imgur.com/YH3Vv.jpg" rel="nofollow">Screen from FIREBUG</a></p>
  
  <p><em>Edited:</em> It is Wordpress site with Woocommerce plugin. I didn't do anything with this file or with jquery. 
  <a href="http://mizulife.sk" rel="nofollow">Page link</a></p>
  
  <p>JS file: </p>
  
  <pre><code>jQuery( function( $ ) {
  
      // wc_add_to_cart_params is required to continue, ensure the object exists
      if ( typeof wc_add_to_cart_params === 'undefined' )
          return false;
  
      // Ajax add to cart
      $( document ).on( 'click', '.add_to_cart_button', function() {
  
          // AJAX add to cart request
          var $thisbutton = $( this );
  
          if ( $thisbutton.is( '.product_type_simple' ) ) {
  
              if ( ! $thisbutton.attr( 'data-product_id' ) )
                  return true;
  
              $thisbutton.removeClass( 'added' );
              $thisbutton.addClass( 'loading' );
  
              var data = {
                  action: 'woocommerce_add_to_cart',
                  product_id: $thisbutton.attr( 'data-product_id' ),
                  quantity: $thisbutton.attr( 'data-quantity' )
              };
  
              // Trigger event
              $( 'body' ).trigger( 'adding_to_cart', [ $thisbutton, data ] );
  
              // Ajax action
              $.post( wc_add_to_cart_params.ajax_url, data, function( response ) {
  
                  if ( ! response )
                      return;
  
                  var this_page = window.location.toString();
  
                  this_page = this_page.replace( 'add-to-cart', 'added-to-cart' );
  
                  if ( response.error &amp;&amp; response.product_url ) {
                      window.location = response.product_url;
                      return;
                  }
  
                  // Redirect to cart option
                  if ( wc_add_to_cart_params.cart_redirect_after_add === 'yes' ) {
  
                      window.location = wc_add_to_cart_params.cart_url;
                      return;
  
                  } else {
  
                      $thisbutton.removeClass( 'loading' );
  
                      fragments = response.fragments;
                      cart_hash = response.cart_hash;
  
                      // Block fragments class
                      if ( fragments ) {
                          $.each( fragments, function( key, value ) {
                              $( key ).addClass( 'updating' );
                          });
                      }
  
                      // Block widgets and fragments
                      $( '.shop_table.cart, .updating, .cart_totals' ).fadeTo( '400', '0.6' ).block({ message: null, overlayCSS: { background: 'transparent url(' + wc_add_to_cart_params.ajax_loader_url + ') no-repeat center', backgroundSize: '16px 16px', opacity: 0.6 } } );
  
                      // Changes button classes
                      $thisbutton.addClass( 'added' );
  
                      // View cart text
                      if ( ! wc_add_to_cart_params.is_cart &amp;&amp; $thisbutton.parent().find( '.added_to_cart' ).size() === 0 ) {
                          $thisbutton.after( ' &lt;a href="' + wc_add_to_cart_params.cart_url + '" class="added_to_cart wc-forward" title="' + 
                              wc_add_to_cart_params.i18n_view_cart + '"&gt;' + wc_add_to_cart_params.i18n_view_cart + '&lt;/a&gt;' );
                      }
  
                      // Replace fragments
                      if ( fragments ) {
                          $.each( fragments, function( key, value ) {
                              $( key ).replaceWith( value );
                          });
                      }
  
                      // Unblock
                      $( '.widget_shopping_cart, .updating' ).stop( true ).css( 'opacity', '1' ).unblock();
  
                      // Cart page elements
                      $( '.shop_table.cart' ).load( this_page + ' .shop_table.cart:eq(0) &gt; *', function() {
  
                          $( 'div.quantity:not(.buttons_added), td.quantity:not(.buttons_added)' ).addClass( 'buttons_added' ).append( '&lt;input type="button" value="+" id="add1" class="plus" /&gt;' ).prepend( '&lt;input type="button" value="-" id="minus1" class="minus" /&gt;' );
  
                          $( '.shop_table.cart' ).stop( true ).css( 'opacity', '1' ).unblock();
  
                          $( 'body' ).trigger( 'cart_page_refreshed' );
                      });
  
                      $( '.cart_totals' ).load( this_page + ' .cart_totals:eq(0) &gt; *', function() {
                          $( '.cart_totals' ).stop( true ).css( 'opacity', '1' ).unblock();
                      });
  
                      // Trigger event so themes can refresh other areas
                      $( 'body' ).trigger( 'added_to_cart', [ fragments, cart_hash ] );
                  }
              });
  
              return false;
  
          }
  
          return true;
      });
  
  });
  </code></pre>
  
  <p>Thanks.</p>