突出显示多个 Select 选项
Highlight Multiple Select Option
我有多个 select 框作为
<select id="user_id" name="user_id" disabled multiple="multiple">
</select>
我在页面加载后使用 ajax 填充 select 框,填充数据后 select 框变为
<select id="user_id" name="user_id" disabled multiple="multiple">
<option value="256" selected>Manager</option>
<option value="266" selected>Accountant</option>
</select>
但只有会计在 select 框中突出显示,而不是经理。
我试过
<option value="256" selected="selected">
<option value="256" selected="true">
但仍然只有最后一个突出显示,并非所有具有 selected 属性的选项。
如何突出显示所有 selected 选项?除了添加自定义 css class 还有其他方法吗?我做错了什么吗?
感谢任何帮助!提前致谢!
您的 HTML 在普通渲染上看起来不错:
<select id="user_id" name="user_id" disabled multiple="multiple">
<option value="256" selected>Manager</option>
<option value="266" selected>Accountant</option>
</select>
但即使在 jQuery 的动态渲染上,它看起来仍然很好。
以下对我有用:
$(function(){
var items = [
$('<option value="volvo" selected>Volvo</option>'),
$('<option value="saab" selected>Saab</option>'),
$('<option value="audi">Audi</option>')
];
$('select#toLoad').append(items);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="toLoad" name="cars" disabled multiple>
</select>
更新:OP 提出了一个进一步的问题,"What if the multiple attribute is also assigned dynamically and is a single select box on load?"让我们看看:
$(function(){
var items = [
$('<option value="volvo" selected>Volvo</option>'),
$('<option value="saab" selected>Saab</option>'),
$('<option value="audi">Audi</option>')
];
$('select#toLoad').attr('multiple', 'multiple');
$('select#toLoad').append(items);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="toLoad" name="cars" disabled>
</select>
这似乎行得通,但这行不通:
$(function(){
var items = [
$('<option value="volvo" selected>Volvo</option>'),
$('<option value="saab" selected>Saab</option>'),
$('<option value="audi">Audi</option>')
];
$('select#toLoad').append(items);
$('select#toLoad').attr('multiple', 'multiple');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="toLoad" name="cars" disabled>
</select>
正如我们所见:顺序很重要!
我有多个 select 框作为
<select id="user_id" name="user_id" disabled multiple="multiple">
</select>
我在页面加载后使用 ajax 填充 select 框,填充数据后 select 框变为
<select id="user_id" name="user_id" disabled multiple="multiple">
<option value="256" selected>Manager</option>
<option value="266" selected>Accountant</option>
</select>
但只有会计在 select 框中突出显示,而不是经理。
我试过
<option value="256" selected="selected">
<option value="256" selected="true">
但仍然只有最后一个突出显示,并非所有具有 selected 属性的选项。
如何突出显示所有 selected 选项?除了添加自定义 css class 还有其他方法吗?我做错了什么吗?
感谢任何帮助!提前致谢!
您的 HTML 在普通渲染上看起来不错:
<select id="user_id" name="user_id" disabled multiple="multiple">
<option value="256" selected>Manager</option>
<option value="266" selected>Accountant</option>
</select>
但即使在 jQuery 的动态渲染上,它看起来仍然很好。
以下对我有用:
$(function(){
var items = [
$('<option value="volvo" selected>Volvo</option>'),
$('<option value="saab" selected>Saab</option>'),
$('<option value="audi">Audi</option>')
];
$('select#toLoad').append(items);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="toLoad" name="cars" disabled multiple>
</select>
更新:OP 提出了一个进一步的问题,"What if the multiple attribute is also assigned dynamically and is a single select box on load?"让我们看看:
$(function(){
var items = [
$('<option value="volvo" selected>Volvo</option>'),
$('<option value="saab" selected>Saab</option>'),
$('<option value="audi">Audi</option>')
];
$('select#toLoad').attr('multiple', 'multiple');
$('select#toLoad').append(items);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="toLoad" name="cars" disabled>
</select>
这似乎行得通,但这行不通:
$(function(){
var items = [
$('<option value="volvo" selected>Volvo</option>'),
$('<option value="saab" selected>Saab</option>'),
$('<option value="audi">Audi</option>')
];
$('select#toLoad').append(items);
$('select#toLoad').attr('multiple', 'multiple');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="toLoad" name="cars" disabled>
</select>
正如我们所见:顺序很重要!