我正在尝试使用这个漂亮的小部件:http://quasipartikel.at/multiselect_next/
我在同一页面中有两个这个Widget,当我在第一个中选择或取消选择项目时,我正在尝试刷新第二个。
例如,在开始时,我只有这个:
<select id="crc" class="multiselect" multiple="multiple">
</select>
然后,在select和deselect事件中,我正在创建更多节点并将它们添加到此(它可以工作,它创建这样的东西:
<select id="crc" class="multiselect" multiple="multiple">
<option>test1</option>
<option>test2</option>
</select>
问题是我在添加新选项后无法刷新第二个小部件。 我想了一个有类似问题的有用帖子并尝试了这个:
$("#crc").multiselect("destroy").multiselect();
但它没有用,有没有人有想法?
答案 0 :(得分:1)
我有完全相同的问题。这对我有用:
要修复ui.multiselect的析构函数问题,请在destroy函数内部进行以下更改:
destroy: function() {
this.element.show();
this.container.remove();
if ($.Widget === undefined)
$.widget.prototype.destroy.apply(this, arguments);
else {
$.Widget.prototype.destroy.apply(this, arguments);
return this;
}
}
旧版本是:
destroy: function() {
this.element.show();
this.container.remove();
$.widget.prototype.destroy.apply(this, arguments);
}
这种更改的原因是jQuery 1.8中引入了一个新的$ .Widget。我还进行了以下更改/添加,以便它与IE9兼容,并且还提供了获取selectedTexts的功能。
// get all selected values in an array
selectedValues: function() {
return $.map( this.element.find('option[selected]=selected'), function(item,i) { return $(item).val(); });
},
selectedTexts: function () {
return $.map(this.element.find('option[selected]=selected'), function (item, i) { return $(item).html(); });
}