Мне это нужно, поэтому, когда я щелкаю по элементу div класса 'mydiv', все элементы div этого класса имеют z-индекс, равный 1, за исключением элемента div, на который я щелкнул, как z-index, равного 2.
При повторном нажатии на div необходимо изменить его z-index обратно на 1.
Пока что у меня есть следующее:
$('.mydiv').toggle(function() {
$('.mydiv').css('z-index','1');
$(this).css('z-index','2');
}, function() {
$(this).css('z-index','1');
});
Если вы нажмете на divи затем щелкните по нему снова (возвращая z-index в 1), прежде чем щелкнуть по другому, он работает нормально.
Однако, если вы щелкаете по элементу div, а затем щелкаете по другому, не щелкая первый (чтобы переключить его обратно на z-index 1), иногда это работает, а иногда ничего не делает.Я предполагаю, что проблема в первой части моего кода, потому что это:
$('.mydiv').css('z-index','1');
Не всегда выполняется до этого:
$(this).css('z-index','2');
Это проблема, и если да, то как я могупочини это?Спасибо
ОБНОВЛЕНИЕ - Извините, что изначально не думал об этом, но я упростил мой вопрос здесь, на реальной странице должна быть анимация позиционирования CSS.Поэтому, когда вы нажимаете на элемент div, он перемещается с плавной анимацией.Я думаю, это означает, что я не могу просто изменить CSS, переключая класс.Спасибо
-
ОБНОВЛЕНИЕ 2 - Я думал, что у меня это работает, а затем я проверил в IE8 и 7. IE9 в порядке (вместе со всеми другими браузерами, с которыми я тестировал), но IE7 и IE8заставьте все изображения прыгать вокруг, когда вы нажимаете на любое из них.Вот демоверсия (все css и jQuery находятся на странице):
http://smartpeopletalkfast.co.uk/jquery/basicDemo12-bugfix-3.htm
А вот jQuery:
$(".image-div").click(function () {
var divRefTwo = $(".image-div").not(this);
$(".image-div").not(this).animate({
width: '250px',
left: '0px',
marginRight: '0px',
backgroundPosition: '-125px'
}, 400, function() {
$(divRefTwo).css('z-index','1');
});
if ($(this).css('z-index') == 1) {
$(this).css('z-index','2');
$(this).animate({
width: '500px',
left: '-125px',
marginRight: '-250px',
backgroundPosition: '0px'
}, 500, function() {
//
});
}
else {
var divRef = this;
$(this).animate({
width: '250px',
left: '0px',
marginRight: '0px',
backgroundPosition: '-125px'
}, 500, function() {
$(divRef).css('z-index','1');
});
}
});
Я думаюпроисходит следующее: позиция фонового изображения для div.image-div начинается с -125px.Когда вы щелкаете по div.image-div, jQuery анимирует положение фона для всех остальных div этого же класса в -125px.Должны быть изменены только раскрытые div, так как остальные div уже имеют фоновую позицию -125px.
По какой-то причине IE сбрасывает фоновую позицию на 0, а затем анимирует на -125px.Таким образом, анимация заканчивается в правильном месте, но оживляет, чтобы получить их, когда она не должна.
Есть идеи, почему это происходит?Это ошибка в jQuery IE или иерархия селекторов CSS?Спасибо