9

シンプルな選択リストと jquery.dropkick ライブラリを使用して美しくしています。ここで、対応する選択要素が変更された後にそのドロップキックのコンテンツを変更したいと考えています (新しいオプションが追加されました)。ただし、 $('#select').dropkick(); を呼び出すだけです。動作しません。

そして、それはサポートされていないようです。そのドロップキックをゼロから作り直すだけで十分だ。その dropkick オブジェクトを「破棄」してから、.dropkick() メソッドを呼び出して再構築する可能性はありますか?

4

6 に答える 6

23

私は同じ問題に直面し、解決策を見つけることができませんでしたが、最終的にこのハックを機能させることに成功しました.

$select = $("#select1");
$select.removeData("dropkick");
$("#dk_container_select1").remove();

$select.append("<option>opt4</option>");
$select.append("<option>opt5</option>");

$select.dropkick();
于 2012-01-03T18:51:36.843 に答える
14

Diode の回答を活用して、Dropkick コードを変更し、これを少しきれいにしました。

// Reload the dropkick select widget after options have changed
// usage: $("...").dropkick('reload');
methods.reload = function () {
    var $select = $(this);
    var data = $select.data('dropkick');
    $select.removeData("dropkick");
    $("#dk_container_"+ data.id).remove();
    $select.dropkick(data.settings);
};

dropkick.js の次のスニペットの直後に上記のコードを追加します。

methods.reset = function () {
  ...
};

次に、プログラムで使用できます。

    $('#my-select').html("<option>new options</option>");
    $('#my-select').dropkick('reload');
于 2012-11-07T23:34:21.823 に答える
13

さらに新しい訪問者のために。Dropkick は、再描画ではなく、リセット メソッドを使用します。

$("select").dropkick('reset');
于 2012-10-15T21:06:25.227 に答える
2

新規訪問者向け。 ドロップキックにリドロー方式を追加。

$("select").dropkick('redraw');
于 2012-09-12T12:02:31.343 に答える