如何重新加载jquery dropkick对象

Nov*_*der 9 jquery select reload jquery-dropkick

我使用一个简单的选择列表和jquery.dropkick库来使它美丽.现在我想在更改相应的select元素后更改该dropkick内容(一个新选项进来).但只需调用$('#select').dropkick(); 不起作用.

它看起来似乎不受支持.仅仅从头开始重建那个dropkick就足够了.有没有可能"破坏"那个dropkick对象,然后通过调用.dropkick()方法重建它?

Dio*_*ode 23

我遇到了同样的问题,无法找到解决方案,但最终成功地使这个黑客工作.

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

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

$select.dropkick();
Run Code Online (Sandbox Code Playgroud)


小智 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);
};
Run Code Online (Sandbox Code Playgroud)

在dropkick.js中的以下代码段后面添加上面的代码:

methods.reset = function () {
  ...
};
Run Code Online (Sandbox Code Playgroud)

然后你可以以编程方式使用它:

    $('#my-select').html("<option>new options</option>");
    $('#my-select').dropkick('reload');
Run Code Online (Sandbox Code Playgroud)


nun*_*nya 13

对于更新的访客.Dropkick使用重置方法...不重绘.

$("select").dropkick('reset');
Run Code Online (Sandbox Code Playgroud)