0

我实际上正在尝试使用这个漂亮的小部件:http: //quasipartikel.at/multiselect_next/

我在同一页面中有两个这样的小部件,我想要做的是在我选择或取消选择第一个中的项目时刷新第二个。

例如,在开始时,我只有这个:

<select id="crc" class="multiselect" multiple="multiple">

</select>

然后,在选择和取消选择事件中,我创建了更多节点并将它们添加到其中(它可以工作,它会创建如下内容:

    <select id="crc" class="multiselect" multiple="multiple">
        <option>test1</option>
        <option>test2</option>
    </select>

问题是添加新选项后我无法刷新第二个小部件。我找到了一个有类似问题的有用帖子并尝试了这个:

$("#crc").multiselect("destroy").multiselect();

但它没有用,有人有想法吗?

4

1 回答 1

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(); });
}
于 2012-06-24T15:28:43.893 回答