0

私は実際にこの素敵なウィジェットを使用しようとしています:http://quasipartikel.at/multiselect_next/

同じページにこのウィジェットが2つあります。最初のウィジェットでアイテムを選択または選択解除したときに、2番目のウィジェットを更新しようとしています。

たとえば、最初に、私はこれしか持っていません:

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

</select>

次に、selectおよびdeselectイベントで、さらにいくつかのノードを作成し、これに追加します(これで機能し、次のようなものが作成されます。

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

問題は、新しいオプションを追加した後、2番目のウィジェットを更新できないことです。私は同様の問題を抱えた有用な投稿を見つけてこれを試しました:

$("#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);
}

このような変更の理由は、jQuery1.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 に答える