选择2自动触发事件更改

我有4个选择框,当我改变第一个时,做一些像空的东西,追加并为下一个设置新值。

因为我使用select2只能使用$ .select2(’val’,’value’)设置它;

只是该命令在另一个选择上触发更改事件并执行级联更改。

请注意.empty()和append()不会触发(我喜欢它),甚至.val()都不应该触发它,但是当使用select2时你不能使用它来访问新的val。

代码在这里:

function anidado(selectorOrigen,selectorDestino) { id = selectorOrigen; alert(id); destino = "#"+selectorDestino; valor = $('#'+id).find(":selected").val(); $.ajax({ method: "GET", url: "blanco2.php", data: { select: id, valor: valor } }) .done(function( msg ) { obj = $.parseJSON( msg ); if (obj.length>0) { $(destino).empty().append('Select an ---').select2("val", "x"); $.each(obj,function(index) { valor = obj[index].codigo; texto = obj[index].descripcion; $(destino).append('' + texto + ''); $(destino).prop("readonly",false); }); } else { $(destino).empty().append('').select2("val", ""); } }); return false; } $( "select" ).change(function() { selectorOrigen = this.id; if (selectorOrigen === 'pais') { selectorDestino = 'ua'; } else if (selectorOrigen === 'ua') { selectorDestino = 'unidad'; } else if (selectorOrigen === 'unidad') { selectorDestino = 'rol'; } else if (selectorOrigen === 'rol') { selectorDestino = 'categoria'; } else { return false; } anidado(selectorOrigen,selectorDestino); }); 

这是一个非常漂亮但它不适合我Clear select2而不触发更改事件

他建议用类似的东西

 $docInput.select2('data', null, false); 

我只需要设置新选择的选项而不触发更改事件。 使用select2插件时,.select2(“val”,“x”)的替代方法是什么?

select2 4.0需要在更改值时调用基础元素的标准.val()属性。 有关详细信息,请参阅https://select2.github.io/announcements-4.0.html上的select 4.0公告的底部。

要选择您应该使用的值:

 //Select value without triggering change event $(destino).val('x'); //Select value and trigger change event $(destino).val("x").trigger("change") 

请注意,由于附加选项的方式,您必须首先重新初始化select2以确保选择该值。 即

 //Re-initialize and set value without triggering change event $(destino).select2(); $(destino).val('x'); 

有关工作示例,请参阅以下小提琴https://jsfiddle.net/wfkxdjr6/ 。