Код: Выделить всё
function alphabetizeSelectListItems(theOldList) {
var theNewList;
var insertOptionHere;
theNewList = theOldList.cloneNode(true);
while(theOldList.options.length > 0) {
theOldList.options[0].remove();
}
while(theNewList.options.length > 0) {
insertOptionHere = null;
for(var optionCounter = 0; optionCounter < theOldList.length; optionCounter++) {
if(theNewList.options[0].innerHTML.toLocaleUpperCase().localeCompare(theOldList.options[optionCounter].innerHTML.toLocaleUpperCase()) < 0) {
insertOptionHere = optionCounter;
break;
}
}
if(insertOptionHere == null) {
theOldList.appendChild(theNewList.options[0]);
} else {
theOldList.insertBefore(theNewList.options[0], theOldList.options[insertOptionHere]);
}
}
theNewList.remove();
}
Проблема в том, что он копирует все, кроме прослушивателей событий. Поэтому мне приходится использовать тот же список выбора с теми же параметрами, но перемещать их. Я рассмотрел примеры пузырьковой сортировки и попытался адаптировать их к элементам опций, а не к элементам массива, но когда я меняю местами два элемента, мне приходится хранить один во временном элементе, и это удаляет прослушиватель событий.Возможно ли это? Есть ли способ поменять параметры списка выбора, сохранив при этом прослушиватели событий?
Подробнее здесь: https://stackoverflow.com/questions/793 ... -listeners
Мобильная версия