我有一个包含选项列表的下拉菜单,如下所示:
<select id="weightClass" class="form-control input-sm">
<option value="Default">Please Select</option>
<option>200</option>
<option><200</option>
<option>>200</option>
<option>Unknown</option>
</select>
我正在尝试按自定义顺序对它们进行排序,因此它看起来像这样:
<select id="weightClass" class="form-control input-sm">
<option value="Default">Please Select</option>
<option> <200 </option>
<option> 200 </option>
<option> >200 </option>
<option>Unknown</option>
</select>
基本上是这样安排的,首先是小于选项,然后是标准选项,然后是大于选项,然后是未知选项。
这是动态生成的,值可以是任何值,但始终有 4,并且始终采用该格式。始终包含未知、>、
我当前的代码是:
function sortDropDown(target) {
$(target).html($(target + " option").sort(function (a, b) {
return a.text === b.text ? 0 : a.text < b.text ? -1 : 1;
}));
}
这显然不起作用,我如何解决这个问题的任何想法,似乎都找不到有关使用 >
提取文本(排除第一个),使用排序数组对文本进行排序和交换
使用 HTML
<select id="weightClass" class="form-control input-sm">
<option value="Default">Please Select</option>
<option><200</option>
<option>>200</option>
<option>200</option>
<option>Unknown</option>
</select>
你可以使用这个脚本(after上面的 HTML)
var sortOrder = {
'<': 1,
// placeholder for the value
'>': 3,
'U': 4
}
function sortDropDown(target) {
// get text
var opts = [];
$(target + " option").each(function (i) {
if (i)
opts.push($(this).text())
});
opts.sort(function (a, b) {
// get the sort order using the first character
var oa = sortOrder[a[0]] || 2;
var ob = sortOrder[b[0]] || 2;
if (oa > ob)
return 1;
else if (oa < ob)
return -1;
else
return 0;
});
// change the option text
$(target + " option").each(function (i) {
if (i)
$(this).text(opts[i - 1])
});
}
sortDropDown("#weightClass")
var sortOrder = {
'<': 1,
'>': 3,
'U': 4
}
function sortDropDown(target) {
var opts = [];
$(target + " option").each(function (i) {
if (i)
opts.push($(this).text())
});
console.log(opts)
opts.sort(function (a, b) {
var oa = sortOrder[a[0]] || 2;
var ob = sortOrder[b[0]] || 2;
if (oa > ob)
return 1;
else if (oa < ob)
return -1;
else
return 0;
});
$(target + " option").each(function (i) {
if (i)
$(this).text(opts[i - 1])
});
}
sortDropDown("#weightClass")
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="weightClass" class="form-control input-sm">
<option value="Default">Please Select</option>
<option><200</option>
<option>>200</option>
<option>200</option>
<option>Unknown</option>
</select>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)