2012-12-05 23 views

回答

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源将升级在未来更痛苦的是库(取决于你的舒适性/专业知识水平的)。我建议您在修改插件之前完全确定问题不在您的代码中。

+0

感谢您的回复。所有有效的点。对于第二个要点,它是我的代码(其他人编写的代码,但我可以更改)。我想我会坚持选择而不是Select2。首先尝试Select2的原因是动态宽度。 – styfle

+0

不客气。没有使用任何一个库,我不完全确定你的意思是动态宽度。我愿意打赌有一种方法可以用自定义的js或css来完成它。 –

+0

从本质上讲,Select2是一个选择了更多功能的分支。其中一些功能实际上只是模仿本地选择元素。当我说动态宽度时,我的意思是你可以用Select2设置100%的宽度,但不能选择。 – styfle

相关问题