我正在使用jquery排序对下拉列表选项进行排序。如何在下拉列表中隐藏选择项目?
<select id="mySelect">
<option value="">select</option>
<option value="1">a</option>
<option value="12">c</option>
<option value="4">b</option>
<option value="5">e</option>
<option value="6">d</option>
<option value="8">f</option>
</select>
$('#mySelect').html($('#mySelect option').sort(function (x, y) {
return $(x).text() < $(y).text() ? -1 : 1;
}));
答案 0 :(得分:1)
<强> see updated demo 强>
$(function() {
//make a plugin for sort item you can use in fucture also for sort item
$.fn.sortList = function() {
var list = $(this);
var items = $("li", list).get();
items.sort(function(a, b) {
var listItem1 = $(a).text().toUpperCase();
var listItem2 = $(b).text().toUpperCase();
return (listItem1 < listItem2) ? -1 : 1;
});
$.each(items, function(i, itm) {
list.append(itm);
});
}
//plugin code end
// Now call the plugin
$('#mySelect').sortList();
});
答案 1 :(得分:0)
查找并删除选项节点:
$("#mySelect > option[value='']").remove();
答案 2 :(得分:0)
您可以使用CSS(仅限)选择器
来完成此操作#mySelect option[value='']
{
display: none;
}
Issue:
您将在第一时间看到“选择”
如果您对此感到满意,请尝试。别的;
使用CSS选择器使用jquery
$("option[value='']").remove();
或更好(如果您在页面中选择的内容很少):
$("#mySelect option[value='']").remove();
祝你好运!
答案 3 :(得分:0)
您说您希望隐藏“选择”选项。你的意思是你希望它从排序中隐藏吗?
另一种说法:除了第一个选项Select之外,在下拉列表中对所有内容进行排序。如果是这样,请考虑:
$(document).ready(function () {
var mySelect = $('#mySelect'),
mySelectOptions = $('option', mySelect),
selectOption = mySelectOptions.first();
mySelect.html(mySelectOptions
.filter(function (index) {
return index !== 0;
})
.sort(function (x, y) {
return $(x).text() < $(y).text() ? -1 : 1;
})
).prepend(selectOption);
});
使用.filter()方法,您可以提取下拉列表中的所有选项,但第一个选项除外(或者您可以根据其他条件进行过滤...)。缓存第一个选项,我们可以安全地对所有其他选项进行排序,并将第一个选项“Select”作为第一个子元素添加回来。