У меня есть массив, который выглядит что-то вроде
resourceData[0][0] = "pic1.jpg";
resourceData[0][1] = 5;
resourceData[1][0] = "pic2.jpg";
resourceData[1][1] = 2;
resourceData[2][0] = "pic3.jpg";
resourceData[2][1] = 900;
resourceData[3][0] = "pic4.jpg";
resourceData[3][1] = 1;
Цифра представляет собой z-индекс изображения. Минимальное значение z-index равно 1. Максимальное (не очень важное) 2000.
У меня все рендеринг и настройка z-индексов выполнены отлично. У меня вопрос, я хочу иметь четыре функции:
// Brings image to z front
function bringToFront(resourceIndex) {
// Set z-index to max + 1
resourceData[resourceIndex][1] = getBiggestZindex() + 1;
// Change CSS property of image to bring to front
$('#imgD' + resourceIndex).css("z-index", resourceData[resourceIndex][1]);
}
function bringUpOne(resourceIndex) {
}
function bringDownOne(resourceIndex) {
}
// Send to back z
function sendToBack(resourceIndex) {
}
Итак, с учетом индекса [3] (900 z):
Если мы отправим его обратно, оно примет значение 1, и [3] придется перейти к 2, но это конфликтует с [1], у которого есть 2 z-index, поэтому им нужно перейти к трем и т.д.
Есть ли простой программный способ сделать это, потому что, как только я начну это делать, это станет грязным.
важно , чтобы индексы массива не менялись. К сожалению, мы не можем отсортировать массив из-за дизайна.
Обновление
Спасибо за ответы, я опубликую функции здесь, как только они будут написаны, в случае, если кто-нибудь столкнется с этим в будущем (обратите внимание, что в этом коде указан zindex в [6])
// Send to back z
function sendToBack(resourceIndex) {
resourceData[resourceIndex][6] = 1;
$('#imgD' + resourceIndex).css("z-index", 1);
for (i = 0; i < resourceData.length; i++) {
if (i != resourceIndex) {
resourceData[i][6]++;
$('#imgD' + i).css("z-index", resourceData[i][6]);
}
}
}