WooCommerce:如何向“found_variation”事件添加监听器

问题描述 投票:0回答:2

我有一个关于可变产品的 WooCommerce 问题。我想向变体表单的“found_variation”事件添加监听器,以获取有关当前产品变体的信息。

我已经尝试过这个但不起作用:

jQuery.fn.wc_variation_form.bind(
    '发现变体',
    函数(事件,变化){
        console.log(变化); // 记录以查看变化信息
        $('#product-price').html(variation.price_html); // 在自定义 html 元素中显示价格变化
    }
);

有什么想法吗?

javascript jquery woocommerce
2个回答
8
投票

我知道这是一篇旧帖子,但也有同样的问题。最终我用下面的代码让它工作:

$(document).on( 'found_variation', 'form.cart', function( event, variation ) {
/* Your code */           
});

0
投票
$(document).on( 'found_variation', 'form.cart', function( event, variation ) {
//console.log(variation);
      $('.woocommerce-variation-price').addClass('changeprice');
        if(variation.image['full_src'])
        {
            var image_data = variation.image['full_src'];
            var image_data_title = variation.image['title'];
            var image_data_id = variation.image_id;
            $('.product-image-box .swiper-slide-active').html('<a href='+image_data+' title='+image_data_title+'  data-id='+image_data_id+' data-fancybox=group><img src='+image_data+' /></a>');
        }
        
        var in_stock_status = variation.is_in_stock;
        //console.log(in_stock_status);
        if(in_stock_status == true){
             $('#product_stock_manage_check .in_stock').show();
             $('#product_stock_manage_check .out_stock').hide();
        }else{
            $('#product_stock_manage_check .in_stock').hide();
            $('#product_stock_manage_check .out_stock').show();
        }
        
        var quantity_data = $('.input-quantity').val();
        var product_id_data = $('.product_id_data').val();
        var package_without_discount_quantity_field = parseInt($('.package_without_discount_quantity_field').val());
        var package_without_discount_quantity_field1 = parseInt($('.package_without_discount_quantity_field').val()) + parseInt(1);
        var package_20_discount_quantity_field = parseInt($('.package_20_discount_quantity_field').val());
        var package_20_discount_quantity_field1 = parseInt($('.package_20_discount_quantity_field').val()) + parseInt(1);
        var package_30_discount_quantity_field = parseInt($('.package_30_discount_quantity_field').val());
        var package_30_discount_quantity_field1 = parseInt($('.package_30_discount_quantity_field').val()) + parseInt(1);
        var package_40_discount_quantity_field = parseInt($('.package_40_discount_quantity_field').val());
        var package_50_discount_quantity_field = parseInt($('.package_50_discount_quantity_field').val());
        if(variation.display_regular_price)
        {
            var after_discount_variation_list_price_nodiscount = variation.display_regular_price;
            after_discount_variation_list_price_nodiscount = number_format(after_discount_variation_list_price_nodiscount,2,'.',',');
            
            var after_discount_variation_list_price_20_discount = variation.display_regular_price - ((variation.display_regular_price * 20)/100);
            after_discount_variation_list_price_20_discount = number_format(after_discount_variation_list_price_20_discount,2,'.',',');
            
            var after_discount_variation_list_price_30_discount = variation.display_regular_price - ((variation.display_regular_price * 30)/100);
            after_discount_variation_list_price_30_discount = number_format(after_discount_variation_list_price_30_discount,2,'.',',');
            
            var after_discount_variation_list_price_40_discount = variation.display_regular_price - ((variation.display_regular_price * 40)/100);
            after_discount_variation_list_price_40_discount = number_format(after_discount_variation_list_price_40_discount,2,'.',',');
            
            var after_discount_variation_list_price_50_discount = variation.display_regular_price - ((variation.display_regular_price * 50)/100);
            after_discount_variation_list_price_50_discount = number_format(after_discount_variation_list_price_50_discount,2,'.',',');
                
            $('.freediscount').text('1 – '+package_without_discount_quantity_field+' packs');
            $('.20discount').text(''+package_without_discount_quantity_field1+' – '+package_20_discount_quantity_field+' packs');
            $('.30discount').text(''+package_20_discount_quantity_field1+' – '+package_30_discount_quantity_field+' packs');
            $('.40discount').text(''+package_30_discount_quantity_field1+' – '+package_40_discount_quantity_field+' packs');
            
            $('.50discount').text(''+package_50_discount_quantity_field+' +');
            
            $('.freediscountprice').text('$'+after_discount_variation_list_price_nodiscount+'/PK');
            $('.20discountprice').text('$'+after_discount_variation_list_price_20_discount+'/PK');
            $('.30discountprice').text('$'+after_discount_variation_list_price_30_discount+'/PK');
            $('.40discountprice').text('$'+after_discount_variation_list_price_40_discount+'/PK');
            $('.50discountprice').text('$'+after_discount_variation_list_price_50_discount+'/PK + free Postage');
            
            if(quantity_data >=1 && quantity_data <=package_without_discount_quantity_field)
            {
                var final_amount = variation.display_regular_price ;
                
                final_amount = final_amount * quantity_data;
                final_amount = number_format(final_amount,2,'.',',');
                
                var after_discount_variation_list_price = variation.display_regular_price;
                after_discount_variation_list_price = number_format(after_discount_variation_list_price,2,'.',',');
                
                $('.woocommerce-variation-add-to-cart_variations_discount_price').html('<p>Price: <strong>$'+final_amount+'</strong></p>');
                $('#variation_price').val(final_amount);
                $('.variation_after_dicount_pack_price').html('');
                $('.discount_testdata .variations_discount_50').css('display', 'none');
                $('.discount_testdata .variations_discount_40').css('display', 'none');
                $('.discount_testdata .variations_discount_35').css('display', 'none');
                $('.discount_testdata .variations_discount_30').css('display', 'none');
                $('.discount_testdata .variations_discount_20').css('display', 'none');
            }
            else if(quantity_data <=package_20_discount_quantity_field)
            {
                
                var final_amount = variation.display_regular_price - ((variation.display_regular_price * 20)/100);
                
                final_amount = final_amount * quantity_data;
                final_amount = number_format(final_amount,2,'.',',');
                
                var after_discount_variation_list_price = variation.display_regular_price - ((variation.display_regular_price * 20)/100);
                after_discount_variation_list_price = number_format(after_discount_variation_list_price,2,'.',',');
                
                
                $('.woocommerce-variation-add-to-cart_variations_discount_price').html('<p>Price: <strong>$'+final_amount+'</strong></p>');
                $('#variation_price').val(final_amount);
                $('.variation_after_dicount_pack_price').html('<p>After Discount List Price/Pack : <strong>$'+after_discount_variation_list_price+'</strong></p>');
                $('.discount_testdata .variations_discount_50').css('display', 'none');
                $('.discount_testdata .variations_discount_40').css('display', 'none');
                $('.discount_testdata .variations_discount_35').css('display', 'none');
                $('.discount_testdata .variations_discount_30').css('display', 'none');
                $('.discount_testdata .variations_discount_20').css('display', 'block');
            }
            else if(quantity_data <=package_30_discount_quantity_field)
            {
                
                var final_amount = variation.display_regular_price - ((variation.display_regular_price * 30)/100);
                
                final_amount = final_amount * quantity_data;
                final_amount = number_format(final_amount,2,'.',',');
                
                var after_discount_variation_list_price = variation.display_regular_price - ((variation.display_regular_price * 30)/100);
                after_discount_variation_list_price = number_format(after_discount_variation_list_price,2,'.',',');
                
                $('.woocommerce-variation-add-to-cart_variations_discount_price').html('<p>Price: <strong>$'+final_amount+'</strong></p>');
                $('#variation_price').val(final_amount);
                $('.variation_after_dicount_pack_price').html('<p>After Discount List Price/Pack : <strong>$'+after_discount_variation_list_price+'</strong></p>');
                $('.discount_testdata .variations_discount_50').css('display', 'none');
                $('.discount_testdata .variations_discount_40').css('display', 'none');
                $('.discount_testdata .variations_discount_35').css('display', 'none');
                $('.discount_testdata .variations_discount_30').css('display', 'block');
                $('.discount_testdata .variations_discount_20').css('display', 'none');
            }
            else if(quantity_data <=package_40_discount_quantity_field)
            {
                
                var final_amount = variation.display_regular_price - ((variation.display_regular_price * 40)/100);
                
                final_amount = final_amount * quantity_data;
                final_amount = number_format(final_amount,2,'.',',');
                
                var after_discount_variation_list_price = variation.display_regular_price - ((variation.display_regular_price * 40)/100);
                after_discount_variation_list_price = number_format(after_discount_variation_list_price,2,'.',',');
                
                $('.woocommerce-variation-add-to-cart_variations_discount_price').html('<p>Price: <strong>$'+final_amount+'</strong></p>');
                $('#variation_price').val(final_amount);
                $('.variation_after_dicount_pack_price').html('<p>After Discount List Price/Pack : <strong>$'+after_discount_variation_list_price+'</strong></p>');
                $('.discount_testdata .variations_discount_50').css('display', 'none');
                $('.discount_testdata .variations_discount_40').css('display', 'block');
                $('.discount_testdata .variations_discount_35').css('display', 'none');
                $('.discount_testdata .variations_discount_30').css('display', 'none');
                $('.discount_testdata .variations_discount_20').css('display', 'none');
            }
            else if(quantity_data <=package_50_discount_quantity_field)
            {
                
                var final_amount = variation.display_regular_price - ((variation.display_regular_price * 50)/100);
                
                final_amount = final_amount * quantity_data;
                final_amount = number_format(final_amount,2,'.',',');
                
                var after_discount_variation_list_price = variation.display_regular_price - ((variation.display_regular_price * 50)/100);
                after_discount_variation_list_price = number_format(after_discount_variation_list_price,2,'.',',');
                
                $('.woocommerce-variation-add-to-cart_variations_discount_price').html('<p>Price: <strong>$'+final_amount+'</strong></p>');
                $('#variation_price').val(final_amount);
                $('.variation_after_dicount_pack_price').html('<p>After Discount List Price/Pack : <strong>$'+after_discount_variation_list_price+'</strong></p>');
                $('.discount_testdata .variations_discount_50').css('display', 'block');
                $('.discount_testdata .variations_discount_40').css('display', 'none');
                $('.discount_testdata .variations_discount_35').css('display', 'none');
                $('.discount_testdata .variations_discount_30').css('display', 'none');
                $('.discount_testdata .variations_discount_20').css('display', 'none');
            }
            else
            {
                
                var final_amount = variation.display_regular_price - ((variation.display_regular_price * 50)/100);
                
                final_amount = final_amount * quantity_data;
                final_amount = number_format(final_amount,2,'.',',');
                
                var after_discount_variation_list_price = variation.display_regular_price - ((variation.display_regular_price * 50)/100);
                after_discount_variation_list_price = number_format(after_discount_variation_list_price,2,'.',',');
                
                $('.woocommerce-variation-add-to-cart_variations_discount_price').html('<p><strong>$'+final_amount+'</strong></p>');
                $('#variation_price').val(final_amount);
                $('.variation_after_dicount_pack_price').html('<p>After Discount List Price/Pack : <strong>$'+after_discount_variation_list_price+'</strong></p>');
                $('.discount_testdata .variations_discount_50').css('display', 'block');
                $('.discount_testdata .variations_discount_40').css('display', 'none');
                $('.discount_testdata .variations_discount_35').css('display', 'none');
                $('.discount_testdata .variations_discount_30').css('display', 'none');
                $('.discount_testdata .variations_discount_20').css('display', 'none');
            }
        }
        else
        {
            if(quantity_data >=5 && quantity_data <=9)
            {
                
                var final_amount = variation.display_regular_price - ((variation.display_regular_price * 20)/100);
                
                final_amount = final_amount * quantity_data;
                final_amount = number_format(final_amount,2,'.',',');
                
                var after_discount_variation_list_price = variation.display_regular_price - ((variation.display_regular_price * 20)/100);
                after_discount_variation_list_price = number_format(after_discount_variation_list_price,2,'.',',');
                
                
                $('.woocommerce-variation-add-to-cart_variations_discount_price').html('<p>Price: <strong>$'+final_amount+'</strong></p>');
                $('#variation_price').val(final_amount);
                $('.variation_after_dicount_pack_price').html('<p>After Discount List Price/Pack : <strong>$'+after_discount_variation_list_price+'</strong></p>');
            }
            else if(quantity_data >=10 && quantity_data <=24)
            {
                
                var final_amount = variation.display_regular_price - ((variation.display_regular_price * 30)/100);
                
                final_amount = final_amount * quantity_data;
                final_amount = number_format(final_amount,2,'.',',');
                
                var after_discount_variation_list_price = variation.display_regular_price - ((variation.display_regular_price * 30)/100);
                after_discount_variation_list_price = number_format(after_discount_variation_list_price,2,'.',',');
                
                $('.woocommerce-variation-add-to-cart_variations_discount_price').html('<p>Price: <strong>$'+final_amount+'</strong></p>');
                $('#variation_price').val(final_amount);
                $('.variation_after_dicount_pack_price').html('<p>After Discount List Price/Pack : <strong>$'+after_discount_variation_list_price+'</strong></p>');
            }
            else if(quantity_data >=25 && quantity_data <=49)
            {
                
                var final_amount = variation.display_regular_price - ((variation.display_regular_price * 35)/100);
                
                final_amount = final_amount * quantity_data;
                final_amount = number_format(final_amount,2,'.',',');
                
                var after_discount_variation_list_price = variation.display_regular_price - ((variation.display_regular_price * 35)/100);
                after_discount_variation_list_price = number_format(after_discount_variation_list_price,2,'.',',');
                
                $('.woocommerce-variation-add-to-cart_variations_discount_price').html('<p>Price: <strong>$'+final_amount+'</strong></p>');
                $('#variation_price').val(final_amount);
                $('.variation_after_dicount_pack_price').html('<p>After Discount List Price/Pack : <strong>$'+after_discount_variation_list_price+'</strong></p>');
            }
            
            else if(quantity_data >=50 && quantity_data <=99)
            {
                
                var final_amount = variation.display_regular_price - ((variation.display_regular_price * 40)/100);
                
                final_amount = final_amount * quantity_data;
                final_amount = number_format(final_amount,2,'.',',');
                
                var after_discount_variation_list_price = variation.display_regular_price - ((variation.display_regular_price * 40)/100);
                after_discount_variation_list_price = number_format(after_discount_variation_list_price,2,'.',',');
                
                $('.woocommerce-variation-add-to-cart_variations_discount_price').html('<p>Price: <strong>$'+final_amount+'</strong></p>');
                $('#variation_price').val(final_amount);
                $('.variation_after_dicount_pack_price').html('<p>After Discount List Price/Pack : <strong>$'+after_discount_variation_list_price+'</strong></p>');
            }
            else if(quantity_data >=100)
            {
                
                var final_amount = variation.display_regular_price - ((variation.display_regular_price * 50)/100);
                
                final_amount = final_amount * quantity_data;
                final_amount = number_format(final_amount,2,'.',',');
                
                var after_discount_variation_list_price = variation.display_regular_price - ((variation.display_regular_price * 50)/100);
                after_discount_variation_list_price = number_format(after_discount_variation_list_price,2,'.',',');
                
                $('.woocommerce-variation-add-to-cart_variations_discount_price').html('<p>Price: <strong>$'+final_amount+'</strong></p>');
                $('#variation_price').val(final_amount);
                $('.variation_after_dicount_pack_price').html('<p>After Discount List Price/Pack : <strong>$'+after_discount_variation_list_price+'</strong></p>');
            }
            else
            {
                var final_amount = variation.display_regular_price ;
                
                final_amount = final_amount * quantity_data;
                final_amount = number_format(final_amount,2,'.',',');
                
                var after_discount_variation_list_price = variation.display_regular_price;
                after_discount_variation_list_price = number_format(after_discount_variation_list_price,2,'.',',');
                
                $('.woocommerce-variation-add-to-cart_variations_discount_price').html('<p>Price: <strong>$'+final_amount+'</strong></p>');
                $('#variation_price').val(final_amount);
                
                $('.variation_after_dicount_pack_price').html('');
            }
            
        }
      });
      function number_format (number, decimals, dec_point, thousands_sep) {
            // Strip all characters but numerical ones.
            number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
            var n = !isFinite(+number) ? 0 : +number,
            prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
            sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
            dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
            s = '',
            toFixedFix = function (n, prec) {
                var k = Math.pow(10, prec);
                return '' + Math.round(n * k) / k;
            };
            // Fix for IE parseFloat(0.55).toFixed(0) = 0;
            s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
            if (s[0].length > 3) {
                s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
            }
            if ((s[1] || '').length < prec) {
                s[1] = s[1] || '';
                s[1] += new Array(prec - s[1].length + 1).join('0');
            }
            return s.join(dec);
        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.