@antobato

Проблема с кодом (слайдер для комментариев)?

Приветствую.
Поставил на сайт слайдер последних комментариев, взял отсюда код prodengiblog.ru/archives/2315, но код работает очень странно.

Если я 1 раз вызываю его в виджетах, то прокрутка не работает, а просто пропадает последний комментарий, а если я 2 раза этот код вызываю, то первый начинает работать, а второй тупит... Что можно сделать?
  • Вопрос задан
  • 2266 просмотров
Пригласить эксперта
Ответы на вопрос 1
Если внимательно посмотреть код слайдера, то:
1. Если 1-раз вызывать в виджетах, то код будет работать корректно, когда у Вас на сайте появится больше 5 комментариев, так как блок добавляющий комментарий, захардкожен в анимацию 5-го по счету
$('#listticker ul').find("li:eq(4)").animate({opacity: "0"}, "800", function() {
                $('#listticker ul').prepend(last);
                $('#listticker li:first').css({opacity: "0"}).slideDown(function(){
                       $(this).css({opacity: "1"});
                });
            })
элемента, у вас же из 5-ти, после удаления последнего остается только 4-е элемента. Вот и получается что только удаляется, но не добавляется..
2. Если 2 раза вызывать в виджетах - то вообще не стоит его два раза вызывать на одной странице.. плагин написан достаточно криво,.. весь js завязан на id элемента #listticker, который должен быть на странице _один_, иначе jQuery будет вести себя не так как Вы этого ожидаете. Как именно - надо разбираться дополнительно, но скорее всего, все будет работать только для первого блока (того что выше к началу страницы, если смотреть в html коде), либо же для множества элементов двух блоков с #listticker. А первый начинает работать только потому, что из 5-ти фактических комментариев у Вас уже получается 10-ять, ну и функция по добавлению комментария, на анимации 5-го элемента, начинает работать.

Попробовать починить виджет для работы и с 5-ю комментариями, можно заменив блок
$('#listticker ul').find("li:eq(4)").animate({opacity: "0"}, "800", function() {
                $('#listticker ul').prepend(last);
                $('#listticker li:first').css({opacity: "0"}).slideDown(function(){
                       $(this).css({opacity: "1"});
                });
            })

на
$('#listticker ul li').last().animate({opacity: "0"}, "800", function() {
                $('#listticker ul').prepend(last);
                $('#listticker li:first').css({opacity: "0"}).slideDown(function(){
                       $(this).css({opacity: "1"});
                });
            })


Но проблема с неадекватностью для двух и более вызовов кода на странице останется.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы