在 WooCommerce 中使用 Select2 的 SelectWoo 实例时遇到问题

Having trouble working with SelectWoo instances of Select2 within WooCommerce

提问人:Brett 提问时间:5/31/2019 最后编辑:Mark SchultheissBrett 更新时间:2/2/2023 访问量:1432

问:

我在 WooCommerce 中的一些自定义区域中使用 Select2,我用一些代码来添加和删除某些类,它工作正常,除了 WooCommerce 自己使用的 SelectWoo 实例没有添加提供的示例中使用的类。el.addClass('has-selection');

示例代码:

(function($) {
     $('select').each(function(e) {
        handleSelectSelections($(this));
    });
})( jQuery );

function handleSelectSelections(select) {
    var el = (select.next('.select2').length) ? jQuery(select.data('select2').$container) : select;

    if (select.val() !== "" && select.val() !== null) {
        el.addClass('has-selection');
    } else {
        el.removeClass('has-selection');
    }
}

一切正常,除非它到达实际部分,它添加了它不起作用的类 - 没有添加任何类。

我在这里遗漏了什么吗?

javascript jquery woocommerce jquery-select2-4

评论

0赞 bigless 5/31/2019
你打印了select.val()吗?
0赞 Brett 5/31/2019
@bigless 是的,该值是正确的。
3赞 romuleald 6/8/2019
el的结果是什么?没有控制台错误?
0赞 skobaljic 6/9/2019
应该在选择更改时触发,还是只触发一次?没有工作的例子就无能为力,你有在线页面吗?handleSelectSelections
0赞 Brett 6/9/2019
@romuleald 正确,它只是按预期输出元素。

答:

0赞 Паша Харченко 8/12/2022 #1

可能

if (select.val() !== "" && select.val() !== null) {
    **el.className += 'has-selection';**
} else {
    el.removeClass('has-selection');
}