【问题标题】:Hide specific element based on shipping method in WooCommerce checkout在 WooCommerce 结帐中根据运输方式隐藏特定元素
【发布时间】:2021-06-24 05:41:29
【问题描述】:

我正在为 Woocommerce 添加一个代码 sn-p,以便在选择送货方式取货时在结帐页面上隐藏一个 div。

// When shipping method is selected
    jQuery( 'form.checkout' ).on( 'change', 'input[name^="shipping_method"]', function () {
        var val = jQuery( this ).val();
        if ( val.match( "^local_pickup:2" ) ) {
            jQuery( '.lds_plugin' ).slideUp(); // hide shipping address
        } else {
            jQuery( '.lds_plugin' ).slideDown(); // show shipping address
            // scroll to top of shipping address
            jQuery('html, body').animate({
                scrollTop: jQuery(".lds_plugin").offset().top - 120
            }, 1500);
        }
    } );

我从这个链接得到这个代码:jQuery on checkout page for change of shipping method - hide show div 50% works,我通过使用我想隐藏的 div 的类来更改 div 名称。

但是,当我尝试保存并激活此 sn-p 时出现错误。

不要惊慌

您尝试保存的代码 sn-p 在第 3 行产生了一个致命错误:

语法错误,意外的 'var' (T_VAR)

sn-p之前版本不变,本站其余部分应该是 像以前一样正常运行。

请使用浏览器中的后退按钮返回上一页并尝试修复 代码错误。如果您愿意,您可以关闭此页面并放弃您刚刚所做的更改。不 将对本网站进行更改。

我该如何解决这个问题?

【问题讨论】:

    标签: jquery wordpress woocommerce checkout shipping-method


    【解决方案1】:

    由于您在代码中设置了特定的运输方式费率 ID local_pickup:2,而不是针对所有本地取货运输方式,您应该替换:

    if ( val.match( "^local_pickup:2" ) ) {
    

    与:

    if ( 'local_pickup:2' === val ) {
    

    它会解决你的问题……


    现在您的代码应该更好地设置如下:

    jQuery(document.body).on('change', 'input[name^="shipping_method"]', function() {
        if ( 'local_pickup:2' === jQuery(this).val() ) {
            jQuery('.lds_plugin').slideUp(); // hide shipping address
        } else {
            jQuery('.lds_plugin').slideDown(); // show shipping address
            // scroll to top of shipping address
            jQuery(document.body).animate({
                scrollTop: jQuery('.lds_plugin').offset().top - 120
            }, 1500);
        }
    });
    

    或在外部 javascript 文件中,例如:

    jQuery( function($){
        $(document.body).on('change', 'input[name^="shipping_method"]', function() {
            if ( 'local_pickup:2' === $(this).val() ) {
                $('.lds_plugin').slideUp(); // hide shipping address
            } else {
                $('.lds_plugin').slideDown(); // show shipping address
                // scroll to top of shipping address
                $(document.body).animate({
                    scrollTop: $('.lds_plugin').offset().top - 120
                }, 1500);
            }
        });
    });
    

    【讨论】:

    • 我试过你的代码,但它也会产生错误。这次,错误提示:“您尝试保存的代码 sn-p 在第 1 行产生了致命错误:语法错误,意外'$',期望变量(T_VARIABLE)”我做错了吗?
    • 我的代码已经过测试并且可以正常工作...我已经为您更新了...您如何以及在哪里保存此代码? ...无论如何,如果您将if ( val.match( "^local_pickup:2" ) ) {替换为if ( 'local_pickup:2' === val ) {,它将解决您最初的问题...如果此答案回答了您的问题,您可以请accept回答,谢谢。
    • 感谢您的帮助!一旦替换为您的建议,该代码实际上运行良好,但没有隐藏任何内容。我终于发现我在 div 类上打错了,所以它隐藏了一个不同的元素。
    猜你喜欢
    • 2020-10-03
    • 2021-11-22
    • 2018-07-10
    • 2018-03-19
    • 2014-07-05
    • 2019-08-10
    • 2018-02-05
    • 1970-01-01
    相关资源
    最近更新 更多