【问题标题】:How to reinitialize a function in jQuery after having modified the DOM修改 DOM 后如何在 jQuery 中重新初始化函数
【发布时间】:2021-10-07 18:30:36
【问题描述】:

使用 jQuery 插件 (Link to Plugin Code) 我尝试实现多选下拉菜单。然后我想动态地(取决于用户输入)更改菜单条目。第一部分工作正常,但到目前为止还没有更改菜单条目。因此,我想寻求帮助。

这是 HTML 部分:

<select id="Fruits" name="Fruits" multiple="" style="display: none;">
    <option value="1">Number1</option>
    <option value="2">Number2</option>
    <option value="3">Number3</option>
</select>

然后我使用该代码来初始化菜单:

$(function(){
   $('#Fruits').multiSelect({'noneText':'Select Fruits'});
});

结果正是我想要的:

接下来我尝试动态添加一个菜单项。我通过以下代码做到这一点:

   var option = document.createElement("option");
   option.text = "Number4";
   option.value = "4";
   var select = document.getElementById("Fruits");
   select.appendChild(option);

这是我希望实现的:

但结果看起来与第一张照片完全相同。也在运行

$(function(){
   $('#Fruits').multiSelect({'noneText':'Select Fruits'});
});

再次没有帮助。

【问题讨论】:

  • $('#Fruits').multiselect( 'refresh' );我想这会帮助你更好地理解它stackoverflow.com/questions/6459974/…
  • @angel.bonev 为什么你认为他们(.multiselect().multiSelect())是一样的?
  • @Andreas 你说得对,对不起

标签: javascript html jquery multi-select


【解决方案1】:

&lt;select&gt; 获取MultiSelect 实例(.data("plugin_multiSelect")),并在添加新元素后调用.updateMenuItems()

$("select").data("plugin_multiSelect")
           .updateMenuItems();

--
答案基于source code 和对其demo page 的测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 2018-02-24
    相关资源
    最近更新 更多