【发布时间】:2011-02-11 14:49:11
【问题描述】:
我有一个数组,看起来像
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-index。最小 z-index 值为 1。最大值(不是很重要)为 2000。
我已经完成了所有的渲染和设置 z-indexes。我的问题是,我想要四个功能:
// 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,但这与 z-index 为 2 的 [1] 冲突,因此他们需要转到 3等等
有没有一种简单的编程方式可以做到这一点,因为一旦我开始这样做,它就会变得一团糟。
数组的索引不会改变是重要。不幸的是,由于设计原因,我们无法对数组进行排序。
更新 感谢您的回答,一旦编写了函数,我将在此处发布,以防将来有人遇到此问题(注意此代码在 [6] 中列出了 zindex)
// 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]);
}
}
}
【问题讨论】:
-
如果 actual(相对于 relative)z-index 值不重要,您可以简单地使用重新排序列表并然后重新分配 z-index 值。换句话说,使用数组中的位置来建模 z-index 关系,然后在更改时通过列表在一个简单的循环中分配 z-indexes。
-
@Pointy 抱歉我在问题末尾的注释中进行了编辑,由于程序的设计我无法对数组列表进行排序,这些索引在整个程序中都使用了它会破坏功能。
-
所有的 z 索引都保证是唯一的,这是一件很有帮助的事情。
标签: javascript jquery arrays sorting z-index