我要在表單里使用一個select下拉菜單(是不是multiple無所謂),所以選擇了jquery chosen這個插件。現在有一個需求,需要根據表單的另一個域來動態加載該select元素的選項。
1
於是很容易的開始下面幾步(當然可以在F12調試工具下單步試驗,效果佳):
// $.ajax({ ... success: function() { ... // 清空select選項集 $("#select_elem").empty(); // 更新select選項(省略...)
光這樣還不夠。.empty()只能清空原生select元素的選項,不能更新chosen插件生成的選項框。
此時的效果是,點擊下拉框中的備選項,備選項不會出現在已選框里,且備選項中的該項消失,控制台報錯:
chosen.jquery.js:410 Uncaught TypeError: Cannot set property 'selected' of undefined
2
於是查到可以在更新select元素后再這樣一下:
$("#select_elem").chosen("destroy")
還有的說
$("#select_elem").chosen("destroy").init()
俱無卵用。
3
繼續查,查到使用$().trigger()方法
$("#select_elem").trigger("liszt:updated") /* 試驗可用 */
一說新版:
$("#select_elem").trigger("chosen:updated")
試驗中,前者可用。
4
綜上,
// $.ajax({ ... success: function() { ... $("#select_elem").empty(); /* 添加新select選項(省略) */ $("#select_elem").trigger("liszt:updated"); // } });
