更改插入到 select2 中的当前选择元素中的选择文本
Alter selection text inserted into current selection element within select2
我正在使用 jQuery 插件 select2 V4 我的 select
字段是一个缩进列表,因为它基于关闭 parent/child 关系,选项树越往下,缩进(nbsp;
's)越多。
这在 select2 中显示正常,但是当您实际 select 一个选项时,text 插入当前 selection 元素 (.select2-selection__rendered
) 的值看起来很愚蠢,因为它在左侧包含一堆空白。
有没有 trim 这个空格 before/after 放在元素中?
我想尝试通过获取 select2-selection__rendered
元素的内容来定位 html 内容,但我不确定如何定位正确的元素。
有点像..
$('select').on('change', function(e) {
// Something here...
});
对 e
目标所做的更改不会影响实际的 select
元素,我 不想 想要。
Working fiddle for older versions.
Is there anyway to trim this whitespace before/after it is placed in the element?
是的,您可以通过使用 .trim()
修剪所选文本并在更改时使用 text()
覆盖它来使用解决方法:
$('#my_select').on('change', function(e) {
var selected_text_container = $('#s2id_my_select .select2-choice span');
selected_text_container.text(selected_text_container.text().trim());
});
在版本 4 中没有 select2-choice
所以直接使用生成的 id 就像:
$('#my_select').on('change', function(e) {
var selected_text_container = $('#select2-my_select-container');
selected_text_container.text(selected_text_container.text().trim());
});
希望这对您有所帮助。
版本 4:
$("select").select2();
$('#my_select').on('change', function(e) {
var selected_text_container = $('#select2-my_select-container');
selected_text_container.text(selected_text_container.text().trim());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://select2.github.io/dist/css/select2.min.css" rel="stylesheet"/>
<script src="https://select2.github.io/dist/js/select2.full.js"></script>
<select id='my_select' style="width:300px">
<option value="AL">A</option>
<option value="Am"> A.a</option>
<option value="An">B</option>
<option value="Ak"> B.a</option>
<option value="WY"> B.a.1</option>
</select>
旧版本:
$("select").select2();
$('#my_select').on('change', function(e) {
var selected_text_container = $('#s2id_my_select .select2-choice span');
selected_text_container.text(selected_text_container.text().trim());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.2/select2.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.2/select2.min.js"></script>
<select id='my_select' style="width:300px">
<option value="AL">A</option>
<option value="Am"> A.a</option>
<option value="An">B</option>
<option value="Ak"> B.a</option>
<option value="WY"> B.a.1</option>
</select>
我正在使用 jQuery 插件 select2 V4 我的 select
字段是一个缩进列表,因为它基于关闭 parent/child 关系,选项树越往下,缩进(nbsp;
's)越多。
这在 select2 中显示正常,但是当您实际 select 一个选项时,text 插入当前 selection 元素 (.select2-selection__rendered
) 的值看起来很愚蠢,因为它在左侧包含一堆空白。
有没有 trim 这个空格 before/after 放在元素中?
我想尝试通过获取 select2-selection__rendered
元素的内容来定位 html 内容,但我不确定如何定位正确的元素。
有点像..
$('select').on('change', function(e) {
// Something here...
});
对 e
目标所做的更改不会影响实际的 select
元素,我 不想 想要。
Working fiddle for older versions.
Is there anyway to trim this whitespace before/after it is placed in the element?
是的,您可以通过使用 .trim()
修剪所选文本并在更改时使用 text()
覆盖它来使用解决方法:
$('#my_select').on('change', function(e) {
var selected_text_container = $('#s2id_my_select .select2-choice span');
selected_text_container.text(selected_text_container.text().trim());
});
在版本 4 中没有 select2-choice
所以直接使用生成的 id 就像:
$('#my_select').on('change', function(e) {
var selected_text_container = $('#select2-my_select-container');
selected_text_container.text(selected_text_container.text().trim());
});
希望这对您有所帮助。
版本 4:
$("select").select2();
$('#my_select').on('change', function(e) {
var selected_text_container = $('#select2-my_select-container');
selected_text_container.text(selected_text_container.text().trim());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://select2.github.io/dist/css/select2.min.css" rel="stylesheet"/>
<script src="https://select2.github.io/dist/js/select2.full.js"></script>
<select id='my_select' style="width:300px">
<option value="AL">A</option>
<option value="Am"> A.a</option>
<option value="An">B</option>
<option value="Ak"> B.a</option>
<option value="WY"> B.a.1</option>
</select>
旧版本:
$("select").select2();
$('#my_select').on('change', function(e) {
var selected_text_container = $('#s2id_my_select .select2-choice span');
selected_text_container.text(selected_text_container.text().trim());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.2/select2.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.2/select2.min.js"></script>
<select id='my_select' style="width:300px">
<option value="AL">A</option>
<option value="Am"> A.a</option>
<option value="An">B</option>
<option value="Ak"> B.a</option>
<option value="WY"> B.a.1</option>
</select>