Распределить параметры по алфавиту в списке выбора, сохранить прослушиватели событийJavascript

Форум по Javascript
Ответить
Гость
 Распределить параметры по алфавиту в списке выбора, сохранить прослушиватели событий

Сообщение Гость »

Мне нужно расположить параметры в алфавитном порядке в списке выбора. Я не могу просто переключить атрибуты InnerHTML и Value, потому что к некоторым параметрам прикреплены классы и прослушиватели событий. Вот что у меня есть на данный момент:

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»