用 Select2 换行选定的文本

Posted

技术标签:

【中文标题】用 Select2 换行选定的文本【英文标题】:Wrap selected text with Select2 【发布时间】:2015-08-27 14:01:20 【问题描述】:

如何让Select2 中的选定文本换行而不是使用省略号?选项项会换行,但我希望输入字段能够向下展开而不是向上展开。

这是一个例子

$('.select2').select2();
<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.css" rel="stylesheet"/>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.js"></script>

<select class="select2" style="width:100px">
  <option value="AL">Really long name that normally wouldn't be visible</option>
  <option value="AK">Alaska</option>
  <option value="AZ">Arizona</option>
</select>

默认Select2 adds the following code:

.select2-selection--single 
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;

但是,删除这些属性并不能解决问题,因为它们仍然嵌套在其他容器中。

【问题讨论】:

【参考方案1】:

我认为 .select2-selection__rendered 元素需要一些调整。 这样的事情怎么样?

.select2-selection--single 
  height: 100% !important;

.select2-selection__rendered
  word-wrap: break-word !important;
  text-overflow: inherit !important;
  white-space: normal !important;


$('.select2').select2();
.select2-selection--single 
  height: 100% !important;

.select2-selection__rendered
  word-wrap: break-word !important;
  text-overflow: inherit !important;
  white-space: normal !important;
<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.css" rel="stylesheet"/>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.js"></script>

<select class="select2" style="width:100px">
  <option value="AL">Really long name that normally wouldn't be visible</option>
  <option value="AK">Alaska</option>
  <option value="AZ">Arizona</option>
</select>

更新

!important 不是必需的。感谢@KyleMit 指出。

【讨论】:

请注意,这里不需要!important。您只需要比当前选择器具有更高的specificity 度数。此外,除非您想应用到每个 select2 对象,否则最好使用一个类来选择性地应用样式。这是fiddle with both of those examples 嘿,谢谢你的来信。我有一种感觉,它不是必需的,但由于某种原因它不起作用。刚刚意识到在代码中首先加载了 sn-p 样式表,然后加载了 css,因此它不起作用。无论如何,谢谢

以上是关于用 Select2 换行选定的文本的主要内容,如果未能解决你的问题,请参考以下文章

Select2 仅按 id 设置选定值

淘汰赛和 Select2 获得选定的对象

获取select2中选定选项的值,然后使用jquery将值设置为输入文本?

Select2 模板选择问题

将 select2 显示为纯输入文本

创建一个按钮以删除 select2 上的选定值