根据WooCommerce产品属性下拉选择更新html标记类值

时间:2019-05-25 作者:theartist

我已经开始建立一个Woocommerce网站,创建了一个可变产品,其中包含两个产品属性。第一个产品属性是"color" 第二个是"size". 我想补充一下.background-black CSS类到我的#primary 仅当"color" 产品属性已更改,未"size". 选择变体后,我通过购物车中显示的URL获取属性ID:attribute_pa_color = black.

我想知道的是,是否有一种方法可以通过使用jQuery和woocommerce来做到这一点,我只是不知道如何正确地做到这一点。我感谢你的帮助。

$(document).ready(function() {
    if ("attribute_pa_color = black") {
        $("#primary").toggleClass("background-black");
    }
});

1 个回复
最合适的回答,由SO网友:LoicTheAztec 整理而成

您可以使用以下命令将自定义类添加/删除到#primary 基于所选产品属性“颜色”的选择器:

<script type="text/javascript">
jQuery(function($){
    var p = \'#primary\',
        c = $(p).prop(\'class\'),
        s = \'select[name="attribute_pa_color"]\';

    // On start
    if( $(s).val() !== \'\' ) {
        $(p).prop(\'class\', \'background-\'+$(s).val());
    }

    // On select (blur live event)
    $(s).blur( function() {
        var b = $(this).val() !== \'\' ? c+\' background-\'+$(this).val() : c;
        $(p).prop(\'class\',b);
    });
});
</script>
测试和工作

您还可以直接添加color-background CSS样式改为#primary 选择器,如:

<script type="text/javascript">
jQuery(function($){
    var p = \'#primary\',
        b = \'background-color\',
        s = \'select[name="attribute_pa_color"]\';

    // On start
    if( $(s).val() !== \'\' ) {
        $(p).css(b, $(s).val());
    }

    // On select (blur live event)
    $(s).blur( function() {
        if( $(this).val() !== \'\' )
            $(p).css(b, $(this).val());
        else
            $(p).removeProp(\'style\');
    });
});
</script>
经过测试,也能正常工作。

相关推荐

如何覆盖Gutenberg管理员的css

我需要建议如何修改古腾堡的核心CSS。我的问题是:轮廓和块标签消失了,我希望它们固定,在每个块上始终可见,而不仅仅是在焦点上。我发现GB是从一种叫做wp-admin/load-styles.php 这基本上让我一事无成。所有样式通过该load-styles.php 文件我不知道在哪里可以找到那门课的大纲。此外,我在任何地方找到的大多数CSS文件都是x4缩小的,并且是RTL的替代品。我应该修改哪个文件及其版本?或者可能还有另一种方法?