Вот мой сайт:
http://smartpeopletalkfast.co.uk/jquery/basicDemo12-bugfix-3.htm
Отлично работает на Firefox, Chrome, Safari и ie9, но в IE8 и 7 не работает.
При нажатии на изображение оно расширяется. При нажатии на другое изображение все расширенные изображения сокращаются. Я думаю, что это вторая часть jQuery, вызывающая проблемы. С IE8 и 7 анимация заканчивается в правильном месте, но все изображения прыгают раньше.
Вот код:
$(".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');
});
}
});
У кого-нибудь есть идеи, почему это происходит? Его довольно сложно отладить, поскольку проблема возникает только во время анимации.
Спасибо
ОБНОВЛЕНИЕ. Я попытался добавить условные операторы, чтобы запускать анимацию (которая сокращает расширенные элементы) только при необходимости, но при этом она вообще не запускается:
if ($(".image-div").not(this).css('width') == '500px') {
$(".image-div").not(this).animate({
width: '250px',
left: '0px',
marginRight: '0px',
backgroundPosition: '-125px'
}, 400, function() {
$(divRefTwo).css('z-index','1');
});
}
else {
}
UPDATE2 - я обновил последнюю демо здесь:
http://smartpeopletalkfast.co.uk/jquery2/basicDemo12-bugfix-6.htm
Условные операторы не позволяют анимации запускаться на элементах div, которые в любом случае не должны расширяться. Так что это решило проблему всех прыгающих дивов.
Однако, когда анимация запускается по нажатию на div (как и предполагалось), этот div все еще странно расширяется в IE7 и 8. Кажется, что это связано с фоновой позицией, которая странно анимируется.