У меня есть селектор опций множественного выбора и кнопки вверх / вниз:
<select id="animalSelector" multiple="multiple">
<option>Elephant</option>
<option>Duck</option>
<option>Dog</option>
<option>Giraffe</option>
<option>Dinosaur</option>
<option>Whale</option>
</select>
<input type="button" id="btnMoveUp" value="^ Up" />
<input type="button" id="btnMoveDown" value="v Down" />
Я хочу, чтобы пользователь мог выделять / выбирать несколько вариантов (используя клавишу CTRL), а затем иметь возможность перемещать свои выборы вверх и вниз.
Я получил удар:
$('#btnMoveUp').click(function (e) {
moveUp();
e.preventDefault();
});
$('#btnMoveDown').click(function (e) {
moveDown();
e.preventDefault();
});
function moveUp() {
var allOptions = $('#animalSelector').find('option');
allOptions.filter(':selected').each(function () {
var newPosition = allOptions.index(this) - 1;
if (newPosition > -1) {
allOptions.eq(newPosition).before(this);
}
});
}
function moveDown() {
var allOptions = $('#animalSelector').find('option');
var count = allOptions.length;
allOptions.filter(':selected').each(function () {
var newPosition = allOptions.index(this) + 1;
if (newPosition < count) {
allOptions.eq(newPosition).after(this);
}
});
}
Однако в IE7 это выглядит очень медленно / странно, и когда выбор начинает доходить до вершины, он выглядит странно.
Есть ли у кого-нибудь предложения о том, как лучше всего справиться с множественным выбором при движении вверх / вниз?