按部分文本排序 HTML Select
Sort HTML Select by partial text
我需要根据文本中的连字符按部分文本对项目进行排序。
例如:
<select id="mySelect">
<option value="1">Oranges - Box A - Deliver</option>
<option value="2">Apples - Box A - Deliver</option>
<option value="3">Bananas - Box B - Deliver</option>
</select>
我需要根据第一个连字符后的文本对项目进行排序,然后按开头文本直至第一个连字符进行排序。
排序结果如下所示:
<select id="mySelect">
<option value="2">Apples - Box A - Deliver</option>
<option value="1">Oranges - Box A - Deliver</option>
<option value="3">Bananas - Box B - Deliver</option>
</select>
所以,需要先按Box名称排序,再按Fruit排序。
我正在使用以下排序,但它使用了整个文本。
function sortAllItems(listname) {
var $r = $(listname + " option");
$r.sort(function (a, b) {
return (a.text).localeCompare(b.text);
});
$(listname).append($($r));
}
我确信有一些灵巧的方法可以同时找到连字符和子字符串,但我一直没能想出有效的方法。
有没有人曾经做过这样疯狂的事情?感谢您的意见。谢谢!
对子部分进行重复排序应该可行:
$r.sort(function (a, b) {
return (a.text.split(" - ")[1]).localeCompare(b.text.split(" - ")[1]);
});
$r.sort(function (a, b) {
return (a.text.split(" - ")[0]).localeCompare(b.text.split(" - ")[0]);
});
您可以使用以下回调:
function (a, b) {
return (a.text.split('-')[1]+a.text).localeCompare(b.text.split('-')[1]+b.text);
}
根据证据表明,如果您按字母顺序对列表进行排序,并且同一个词在不同位置出现多次,则只有第一个有效。
所以:
Box A - Oranges - Box A - Deliver
Box A - Apples - Box A - Deliver
Box B - Bananas - Box B - Deliver
将按以下方式排序:
Box A - Oranges - Deliver
Box A - Apples - Deliver
Box B - Bananas - Deliver
再重复一遍,如果同一个词出现在多个位置,只看第一个。
我需要根据文本中的连字符按部分文本对项目进行排序。 例如:
<select id="mySelect">
<option value="1">Oranges - Box A - Deliver</option>
<option value="2">Apples - Box A - Deliver</option>
<option value="3">Bananas - Box B - Deliver</option>
</select>
我需要根据第一个连字符后的文本对项目进行排序,然后按开头文本直至第一个连字符进行排序。
排序结果如下所示:
<select id="mySelect">
<option value="2">Apples - Box A - Deliver</option>
<option value="1">Oranges - Box A - Deliver</option>
<option value="3">Bananas - Box B - Deliver</option>
</select>
所以,需要先按Box名称排序,再按Fruit排序。 我正在使用以下排序,但它使用了整个文本。
function sortAllItems(listname) {
var $r = $(listname + " option");
$r.sort(function (a, b) {
return (a.text).localeCompare(b.text);
});
$(listname).append($($r));
}
我确信有一些灵巧的方法可以同时找到连字符和子字符串,但我一直没能想出有效的方法。
有没有人曾经做过这样疯狂的事情?感谢您的意见。谢谢!
对子部分进行重复排序应该可行:
$r.sort(function (a, b) {
return (a.text.split(" - ")[1]).localeCompare(b.text.split(" - ")[1]);
});
$r.sort(function (a, b) {
return (a.text.split(" - ")[0]).localeCompare(b.text.split(" - ")[0]);
});
您可以使用以下回调:
function (a, b) {
return (a.text.split('-')[1]+a.text).localeCompare(b.text.split('-')[1]+b.text);
}
根据证据表明,如果您按字母顺序对列表进行排序,并且同一个词在不同位置出现多次,则只有第一个有效。
所以:
Box A - Oranges - Box A - Deliver
Box A - Apples - Box A - Deliver
Box B - Bananas - Box B - Deliver
将按以下方式排序:
Box A - Oranges - Deliver
Box A - Apples - Deliver
Box B - Bananas - Deliver
再重复一遍,如果同一个词出现在多个位置,只看第一个。