如何捕捉 select2 下拉菜单的宽度?

How can I catch the width of select2 dropdown?

我有一个 select2 下拉菜单,其容器的宽度为 100%。容器宽度是可变的。 我的下拉菜单宽度正确。但是当我 select 一个名称很长的选项时,下拉列表的大小会增加。我尝试了很多事情来防止这种情况。但是没有任何效果,因为我不能使用固定尺寸。

所以我的方法是捕获 select2 的大小,在我 select 选项之前,然后在 select 选项之后将相同的大小添加到select再次框。但是试图捕捉 select 框的宽度是行不通的。

$(document).on('change', '.select2', function(e) {
    var width = $( this ).css( "width" );
    alert(width);
  });

输出是1px但是尺寸肯定比1px宽。

https://jsfiddle.net/d5w8t36m/1/

$(this) 在这种情况下,实际上是 selected 项目 而不是 select 下拉列表。要获得 select 下拉列表,请先调用父级 width()

$(document).on('change', '.select2', function(e) {
    var width = $(this).parent().width();
    alert(width);
});