因此,我有一个自定义脚本来更改默认的WooCommerce变体选择,到目前为止,很好的问题是,当变体缺货时,自定义选择应具有与默认选择相同的选项。
上面自定义“选择”,下面是默认设置。 Branco和P缺货。
我发现WooCommerce Variations JS以编程方式删除了脱销的期权,但是由于我的脚本在Variations JS之后运行,因此我认为它应该可以工作。我设法使其工作添加2000ms的setTimeout,但这太多了,它实际上破坏了我拥有的其他功能。如果有人知道如何解决此问题,我将不胜感激。
$('.variations select').each(function(){
var select = $(this);
var div = $('<div class="grupo-atributos">');
var ul = $('<ul>');
select.parent('.value').siblings('.label').find('label').each(function(){
var label = $(this).text();
div.append('<span>'+label+'</span>');
});
$('#custom-select-produto-variavel').append(div);
div.append(ul);
select.find('option').each(function(){
var titulo = $(this).text();
var data_value = $(this).val();
ul.append('<li data-value='+data_value+'>'+titulo+'</li>');
select.change(function(){
select.find('option:selected').each(function(){
var opcao_selected = $(this);
select.find('option:not(:selected)').each(function(){
var opcao_not_selected = $(this);
$('#custom-select-produto-variavel li').each(function(){
var opcao_custom = $(this);
if(opcao_custom.attr('data-value')==opcao_selected.val())
opcao_custom.addClass('atributo-selected');
if(opcao_custom.attr('data-value')==opcao_not_selected.val())
opcao_custom.removeClass('atributo-selected');
});
});
});
}).change();
});
});
$('#custom-select-produto-variavel div ul li:contains("Escolha uma opção")').remove();
$('#custom-select-produto-variavel ul li').click(function() {
var novoVal = $(this).data('value');
$('.variations select:has([value='+novoVal+'])').val(novoVal);
$('.variations select').trigger('change');
});
<div id="custom-select-produto-variavel"></div>
答案 0 :(得分:0)
我发现选择变量具有100ms的启动延迟,因此要使我的脚本正常工作,我需要添加这些行。
$(document).ready(function(){
setTimeout(function(){
// My script
}, 150);
});