【问题标题】:Select2 dropdown menu persists after select removed from DOM从 DOM 中删除选择后,Select2 下拉菜单仍然存在
【发布时间】:2016-04-19 17:13:30
【问题描述】:

我正在使用 select2 版本 4.0.2(rc1) 我看到的是,当将 select2 与 isMultple=true 一起使用时,打开下拉菜单,然后从 DOM 中动态删除选择,菜单仍然存在。

您可以在the select2 examples 中看到它发生的情况,方法是专注于控制以便看到时区选项,然后在控制台中输入$('.s2-example').remove()。选项列表仍然存在。

编辑:上面是我正在尝试解决的一个示例。在我的情况下发生的事情是,dom 被框架操纵以删除选择框,这样我就无法在它发生之前挂钩它。我正在尝试做的是找到一种方法来响应被删除的元素,希望我可以手动删除选项列表(如果存在)。

我正在尝试找出一种干净的方法来处理这个问题。我试过像这样连接到破坏:

$("#select-2-id").on("destroy", function(){...})

但 destroy 似乎没有被解雇。

我曾考虑过使用mutation observer,但这对我来说有点老套。任何人都可以提出更好的方法来处理这个问题吗?任何意见,将不胜感激。谢谢!

【问题讨论】:

    标签: javascript jquery jquery-select2


    【解决方案1】:

    绝对是buried in the documentation (under adapters),但您应该通过将“destroy”传递给jQuery 对象的.select2() 方法来调用select 上的destroy 方法

    $(".js-example-basic-multiple").select2('destroy');
    

    这会破坏实例。然后你就可以放心地拨打.remove()

    $(".js-example-basic-multiple").select2('destroy').remove();
    

    【讨论】:

    • 感谢您的回复。尽管我认为这对我的情况没有多大帮助。在我的情况下,框架正在以一种我无法在它发生之前挂钩的方式从 dom 中删除控件。我已经编辑了我的问题。
    • @TheMethod 所以你不能在它发生之前就陷入它。由于发生了如此破坏性的行为,如果不使用mutation observerDOM mutation event,我看不出有任何方法可以解决这个问题,其中第二个是非常不鼓励的。这些事件监听器已被弃用。
    猜你喜欢
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 2014-06-12
    • 2015-03-01
    • 2017-08-14
    • 1970-01-01
    相关资源
    最近更新 更多