Внутри вашего метода вместо использования $(".prods")
внутри метода, используйте $(this)
, например:
var prodNum = <%=prodNum %>;
var i = 1;
$.timer(5000, function(timer) {
$(".prods").hide("slide", { direction: "down" }, 500, function() {
$(this).html("<div class='prod'>" + $("#pr" + ((4*i) % prodNum)).html() + "</div>" +
"<div class='prod'>" + $("#pr" + ((4*i + 1) % prodNum)).html() + "</div>" +
"<div class='prod'>" + $("#pr" + ((4*i + 2) % prodNum)).html() + "</div>" +
"<div class='prod'>" + $("#pr" + ((4*i + 3) % prodNum)).html() + "</div>")
.show("slide", { direction: "down" }, 500);
i++;
});
});
Когда вы используете $(".prods")
, он анимирует каждый элемент взаимозависимо (и времена n
)элементы, так как каждый .hide()
, который закончил, ставит в очередь каждый другой новый .prod
элемент, это экспоненциально смешивает анимации).Со всеми анимациями слайдов внутри друг друга и очередями для каждого элемента, IE не будет слишком доволен одновременным появлением множества анимаций.