Select2.js插件prepends而不是将容器附加到所选元素

时间:2012-12-05 01:54:18

标签: jquery-plugins

我正在使用jQuery插件Select2.js v3.2,它似乎在元素之前而不是在元素之后插入select2-container。这导致一些代码假定先前的兄弟要破坏。是否有一个“追加后”选项来初始化容器,所以我知道它将始终附加在元素之后?

1 个答案:

答案 0 :(得分:1)

似乎没有办法指定是否在元素之前或之后插入select2-container。我看到它的方式你有几个选择:

  • 修改Select2.js源以在元素后面插入容器。 Line 595.before(this.container);更改为.after(this.container);
  • 从您的问题中不清楚哪个代码"假定以前的兄弟姐妹"。如果您的代码是您应该更改的代码。如果它不是您的代码,您可以尝试找到并解决它。我无法在Select2.js源中找到任何此类假设。
  • 初始化select2后,您可以通过将创建的元素移动到DOM中的所需位置来进行跟进。您可能希望隐藏这些元素,直到它们被初始化。您还应该对此进行测试,以确保它不会破坏Select2.js插件。

    $('.select2-container').each(function() {
      $(this).siblings('.elementSelector').first().after($(this));
    });
    

请注意,修改Select2.js源会使将来升级该库更加痛苦(取决于您的舒适度/专业水平)。我建议您在修改插件之前完全确定问题不在您的代码中。