JSFiddle
我在小提琴中设置了select
3option
秒(1 个空白)。当我从手动切换时,foo
侦听器会正常触发。bar
change
现在,如果我使用此处发布的一些答案中的代码重置select
通过 JS,则不会为新选择的空白选项触发事件,此外,如果我选择在单击按钮之前选择的选项,则事件也不会触发.change
reset
onchange
我确定select
' 的值正在使用上面的函数进行更改,这可以在这个fiddle中看到,但是select
'onchange
事件根本不会触发。
我也试过onchange
, onclick
,oninput
事件无济于事。现在我想知道是否应该使用 MutationObserver 或从 DOM 中删除呈现的选定元素并创建另一个,但我可能想多了。任何帮助表示赞赏。
还:
这个答案对我帮助很大:jQuery Chosen reset
这个答案没有帮助:如何在选择的原型 javascript 选择框中触发 onchange 事件?
如果 jsfiddle.net 被删除,供将来参考的代码:
HTML
<div id="wrapper">
<select id="chosen">
<option value="!!EMPTY VALUE!!"></option>
<option value="foo">foo</option>
<option value="bar">bar</option>
</select>
</div>
<br>
<button id="reset">Reset</button>
JS
$(function() {
$('#chosen').chosen();
$('#wrapper').on('change', '#chosen', function() {
console.log('onchange: ' + this.value);
});
$('#reset').click(function() {
$("#chosen").val('').trigger("liszt:updated"); //doesn't work
//$("#chosen").prop('selectedIndex', 0).trigger("liszt:updated"); //doesn't work either
console.log('reset: ' + $('option:selected').val());
});
});