From bbc8cea1aa65afcc04e51a2ef4c43b4296b95b22 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 1 Feb 2013 11:49:29 +0000 Subject: [PATCH] remove, don't hide, variation attributes --- assets/js/frontend/add-to-cart-variation.js | 20 ++++++++++++++----- .../js/frontend/add-to-cart-variation.min.js | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/assets/js/frontend/add-to-cart-variation.js b/assets/js/frontend/add-to-cart-variation.js index 257d242e3b6..0b04eba59d2 100644 --- a/assets/js/frontend/add-to-cart-variation.js +++ b/assets/js/frontend/add-to-cart-variation.js @@ -182,12 +182,17 @@ jQuery(document).ready(function($) { $variation_form = $(this).closest('form.variations_form'); // Loop through selects and disable/enable options based on selections - $variation_form.find('.variations select').each(function( index, el ){ + $variation_form.find('.variations select').each(function( index, el ) { current_attr_select = $(el); - // Disable all - current_attr_select.find('option:gt(0)').attr('disabled', 'disabled'); + // Reset options + if ( ! current_attr_select.data( 'attribute_options' ) ) + current_attr_select.data( 'attribute_options', current_attr_select.find('option:gt(0)').get() ) + + current_attr_select.find('option:gt(0)').remove(); + current_attr_select.append( current_attr_select.data( 'attribute_options' ) ); + current_attr_select.find('option:gt(0)').removeClass('active'); // Get name var current_attr_name = current_attr_select.attr('name'); @@ -213,10 +218,12 @@ jQuery(document).ready(function($) { attr_val = attr_val.replace(/"/g, "\\\""); // Compare the meercat - current_attr_select.find('option[value="' + attr_val + '"]').removeAttr('disabled'); + current_attr_select.find('option[value="' + attr_val + '"]').addClass('active'); } else { - current_attr_select.find('option').removeAttr('disabled'); + + current_attr_select.find('option:gt(0)').addClass('active'); + } } @@ -225,6 +232,9 @@ jQuery(document).ready(function($) { } + // Detach inactive + current_attr_select.find('option:gt(0):not(.active)').remove(); + }); // Custom event for when variations have been updated diff --git a/assets/js/frontend/add-to-cart-variation.min.js b/assets/js/frontend/add-to-cart-variation.min.js index cc9c4fba1bf..26f962fb8f3 100644 --- a/assets/js/frontend/add-to-cart-variation.min.js +++ b/assets/js/frontend/add-to-cart-variation.min.js @@ -1 +1 @@ -jQuery(document).ready(function(e){function t(e,t){var r=[];for(var i=0;i/g,">");a[e(this).attr("name")]=value}});var c=parseInt(f.attr("data-product_id")),h=window.product_variations[c];h||(h=window.product_variations);var p=t(h,a);if(s){var d=p.pop();if(d){f.find("input[name=variation_id]").val(d.variation_id).change();f.trigger("found_variation",[d])}else{f.find(".variations select").val("");i||f.trigger("reset_image");alert(woocommerce_params.i18n_no_matching_variations_text)}}else{f.trigger("update_variation_values",[p]);i||f.trigger("reset_image");r||f.find(".single_variation_wrap").slideUp("200")}o?l.css("visibility")=="hidden"&&l.css("visibility","visible").hide().fadeIn():l.css("visibility","hidden")}).on("reset_image",function(t){var n=e(this).closest(".product"),r=n.find("div.images img:eq(0)"),i=n.find("div.images a.zoom:eq(0)"),s=r.attr("data-o_src"),o=r.attr("data-o_title"),u=i.attr("data-o_href");if(s&&u&&o){r.attr("src",s).attr("alt",o).attr("title",o);i.attr("href",u).attr("title",o)}}).on("update_variation_values",function(t,n){$variation_form=e(this).closest("form.variations_form");$variation_form.find(".variations select").each(function(t,r){current_attr_select=e(r);current_attr_select.find("option:gt(0)").attr("disabled","disabled");var i=current_attr_select.attr("name");for(num in n){var s=n[num].attributes;for(attr_name in s){var o=s[attr_name];if(attr_name==i)if(o){o=e("
").html(o).text();o=o.replace(/'/g,"\\'");o=o.replace(/"/g,'\\"');current_attr_select.find('option[value="'+o+'"]').removeAttr("disabled")}else current_attr_select.find("option").removeAttr("disabled")}}});$variation_form.trigger("woocommerce_update_variation_values")}).on("found_variation",function(t,n){var r=e(this),i=e(this).closest(".product"),s=i.find("div.images img:eq(0)"),o=i.find("div.images a.zoom:eq(0)"),u=s.attr("data-o_src"),a=s.attr("data-o_title"),f=o.attr("data-o_href"),l=n.image_src,c=n.image_link,h=n.image_title;r.find(".variations_button").show();r.find(".single_variation").html(n.price_html+n.availability_html);if(!u){u=s.attr("src")?s.attr("src"):"";s.attr("data-o_src",u)}if(!f){f=o.attr("href")?o.attr("href"):"";o.attr("data-o_href",f)}if(!a){a=s.attr("title")?s.attr("title"):"";s.attr("data-o_title",a)}if(l&&l.length>1){s.attr("src",l).attr("alt",h).attr("title",h);o.attr("href",c).attr("title",h)}else{s.attr("src",u).attr("alt",a).attr("title",a);o.attr("href",f).attr("title",a)}var p=r.find(".single_variation_wrap"),d=i.find(".product_meta").find(".sku"),v=i.find(".product_weight"),m=i.find(".product_dimensions");d.attr("data-o_sku")||d.attr("data-o_sku",d.text());v.attr("data-o_weight")||v.attr("data-o_weight",v.text());m.attr("data-o_dimensions")||m.attr("data-o_dimensions",m.text());n.sku?d.text(n.sku):d.text(d.attr("data-o_sku"));n.weight?v.text(n.weight):v.text(v.attr("data-o_weight"));n.dimensions?m.text(n.dimensions):m.text(m.attr("data-o_dimensions"));p.find(".quantity").show();!n.is_in_stock&&!n.backorders_allowed&&r.find(".variations_button").hide();n.min_qty?p.find("input[name=quantity]").attr("min",n.min_qty).val(n.min_qty):p.find("input[name=quantity]").removeAttr("min");n.max_qty?p.find("input[name=quantity]").attr("max",n.max_qty):p.find("input[name=quantity]").removeAttr("max");if(n.is_sold_individually=="yes"){p.find("input[name=quantity]").val("1");p.find(".quantity").hide()}p.slideDown("200").trigger("show_variation",[n])});e("form.variations_form .variations select").change()}); \ No newline at end of file +jQuery(document).ready(function(e){function t(e,t){var r=[];for(var i=0;i/g,">");a[e(this).attr("name")]=value}});var c=parseInt(f.attr("data-product_id")),h=window.product_variations[c];h||(h=window.product_variations);var p=t(h,a);if(s){var d=p.pop();if(d){f.find("input[name=variation_id]").val(d.variation_id).change();f.trigger("found_variation",[d])}else{f.find(".variations select").val("");i||f.trigger("reset_image");alert(woocommerce_params.i18n_no_matching_variations_text)}}else{f.trigger("update_variation_values",[p]);i||f.trigger("reset_image");r||f.find(".single_variation_wrap").slideUp("200")}o?l.css("visibility")=="hidden"&&l.css("visibility","visible").hide().fadeIn():l.css("visibility","hidden")}).on("reset_image",function(t){var n=e(this).closest(".product"),r=n.find("div.images img:eq(0)"),i=n.find("div.images a.zoom:eq(0)"),s=r.attr("data-o_src"),o=r.attr("data-o_title"),u=i.attr("data-o_href");if(s&&u&&o){r.attr("src",s).attr("alt",o).attr("title",o);i.attr("href",u).attr("title",o)}}).on("update_variation_values",function(t,n){$variation_form=e(this).closest("form.variations_form");$variation_form.find(".variations select").each(function(t,r){current_attr_select=e(r);current_attr_select.data("attribute_options")||current_attr_select.data("attribute_options",current_attr_select.find("option:gt(0)").get());current_attr_select.find("option:gt(0)").remove();current_attr_select.append(current_attr_select.data("attribute_options"));current_attr_select.find("option:gt(0)").removeClass("active");var i=current_attr_select.attr("name");for(num in n){var s=n[num].attributes;for(attr_name in s){var o=s[attr_name];if(attr_name==i)if(o){o=e("
").html(o).text();o=o.replace(/'/g,"\\'");o=o.replace(/"/g,'\\"');current_attr_select.find('option[value="'+o+'"]').addClass("active")}else current_attr_select.find("option:gt(0)").addClass("active")}}current_attr_select.find("option:gt(0):not(.active)").remove()});$variation_form.trigger("woocommerce_update_variation_values")}).on("found_variation",function(t,n){var r=e(this),i=e(this).closest(".product"),s=i.find("div.images img:eq(0)"),o=i.find("div.images a.zoom:eq(0)"),u=s.attr("data-o_src"),a=s.attr("data-o_title"),f=o.attr("data-o_href"),l=n.image_src,c=n.image_link,h=n.image_title;r.find(".variations_button").show();r.find(".single_variation").html(n.price_html+n.availability_html);if(!u){u=s.attr("src")?s.attr("src"):"";s.attr("data-o_src",u)}if(!f){f=o.attr("href")?o.attr("href"):"";o.attr("data-o_href",f)}if(!a){a=s.attr("title")?s.attr("title"):"";s.attr("data-o_title",a)}if(l&&l.length>1){s.attr("src",l).attr("alt",h).attr("title",h);o.attr("href",c).attr("title",h)}else{s.attr("src",u).attr("alt",a).attr("title",a);o.attr("href",f).attr("title",a)}var p=r.find(".single_variation_wrap"),d=i.find(".product_meta").find(".sku"),v=i.find(".product_weight"),m=i.find(".product_dimensions");d.attr("data-o_sku")||d.attr("data-o_sku",d.text());v.attr("data-o_weight")||v.attr("data-o_weight",v.text());m.attr("data-o_dimensions")||m.attr("data-o_dimensions",m.text());n.sku?d.text(n.sku):d.text(d.attr("data-o_sku"));n.weight?v.text(n.weight):v.text(v.attr("data-o_weight"));n.dimensions?m.text(n.dimensions):m.text(m.attr("data-o_dimensions"));p.find(".quantity").show();!n.is_in_stock&&!n.backorders_allowed&&r.find(".variations_button").hide();n.min_qty?p.find("input[name=quantity]").attr("min",n.min_qty).val(n.min_qty):p.find("input[name=quantity]").removeAttr("min");n.max_qty?p.find("input[name=quantity]").attr("max",n.max_qty):p.find("input[name=quantity]").removeAttr("max");if(n.is_sold_individually=="yes"){p.find("input[name=quantity]").val("1");p.find(".quantity").hide()}p.slideDown("200").trigger("show_variation",[n])});e("form.variations_form .variations select").change()}); \ No newline at end of file