Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
3 / 3 / 2
Регистрация: 10.10.2010
Сообщений: 55

Callback animate jquery

01.07.2015, 22:28. Показов 1277. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет друзья! Вопрос такой - почему условие сработает если на момент скролла по клику эта переменная в true?
Пример тут - https://jsfiddle.net/34uas8ke/2/
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.07.2015, 22:28
Ответы с готовыми решениями:

Animate jQuery
Можно ли сдвинуть объект на столько пикселей, сколько будет в 3 раза больше его размера. Вряд ли понятно=) Короч объект 10px по Y, надо...

Подтормаживает jQuery.animate
Здравствуйте! Прошу помочь с проблемой... На сайте анимируется 3 объекта одновременно, один из них достаточно большой (внутри него...

JQuery анимация animate
Здравствуйте! Совсем недавно начал изучать JQuery, поэтому приходится задавать элементарные вопросы. Свой вопрос много раз гуглил и находил...

7
 Аватар для Sn1p3rOk
288 / 175 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
01.07.2015, 22:46
Вы делаете клик, значение меняется на true, потом заканчивается анимация и значение меняется на false.

JavaScript
1
2
3
4
5
6
7
8
9
$('html, body').stop().animate({ 
        scrollTop: 1034
        },
        {
            duration: 300,
            complete: function() {
                noScrollAction = false; // ИЗ - ЗА ЭТОГО !!!
            }
        });
0
3 / 3 / 2
Регистрация: 10.10.2010
Сообщений: 55
01.07.2015, 22:59  [ТС]
Sn1p3rOk,
Переменная выставится в false после окончания анимации, т.е после окончания скроллинга..сообщение не должно выводится в момент скролла по кнопке. Потом я ставлю флаг скролла в неактивное положение - т.е дефолтное.

Добавлено через 1 минуту
Sn1p3rOk,
Представим, что по клику на кнопку, я таким образом блокирую вызов различных функций, которые дергаются при обычном скролле.
0
 Аватар для Sn1p3rOk
288 / 175 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
01.07.2015, 23:10
По клику переменная true - вы правы, но как только заканчивается анимация, то она снова становится false... И сразу же выполняется код ниже, так как скролл произошел.
JavaScript
1
2
3
4
5
6
7
var noScrollAction = false; // не скроллим .... ???
 
$(window).scroll(function() {  
    if(!noScrollAction) {
            alert('никогда не покажусь при клике на кнопку!') // Ошибаетесь :) Условие уже false.
    }
});
0
3 / 3 / 2
Регистрация: 10.10.2010
Сообщений: 55
01.07.2015, 23:12  [ТС]
Попробую уточнить вопрос, почему каллбек вызывается раньше окончания функции анимации, тем самым выставляя переменную в false и мы попадаем в if в событии scroll.

Добавлено через 2 минуты
Sn1p3rOk,
Когда функция отработает, то скролл завершается и событие уже не может быть вызвано, ведь скролл закончен..разве не так?
0
 Аватар для Sn1p3rOk
288 / 175 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
01.07.2015, 23:23
Цитата Сообщение от loms Посмотреть сообщение
Попробую уточнить вопрос, почему каллбек вызывается раньше окончания функции анимации, тем самым выставляя переменную в false и мы попадаем в if в событии scroll.
Я запустил Ваш код. Каллбек выполняется сразу же окончания анимации.
Цитата Сообщение от loms Посмотреть сообщение
Когда функция отработает, то скролл завершается и событие уже не может быть вызвано, ведь скролл закончен..разве не так?
Не совсем так. Ваша обработка события работает все время пока идет скролл. То есть Вы нажали на кнопку, пошел скролл, пошла обработка события, но условие в теле функции события не выполняется так как noScrollAction = true. Но как только анимация скролла завершается именно анимация, не сам скролл. Скролл завершается в доли миллисекунд после анимации, но в эти доли миллисекунд успевает сработать событие и в итоге проверка условия.
Как-то так...
1
3 / 3 / 2
Регистрация: 10.10.2010
Сообщений: 55
01.07.2015, 23:59  [ТС]
Sn1p3rOk,
Собственно это мне тоже приходило в голову, что анимация скролла и сам скролл имеют небольшие отклонения..хотя это и грустно, что же ничего не остается кроме как вручить setTimeout?

Добавлено через 29 минут
Грубый тест скорости выполнения - https://jsfiddle.net/34uas8ke/4/ разница от 1 до 20 мс в среднем
0
 Аватар для Sn1p3rOk
288 / 175 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
02.07.2015, 00:20
Цитата Сообщение от loms Посмотреть сообщение
Собственно это мне тоже приходило в голову, что анимация скролла и сам скролл имеют небольшие отклонения..хотя это и грустно, что же ничего не остается кроме как вручить setTimeout?
Решил проблему таким способом.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var noScrollAction = false;
var temp = false;
 
$('#test').click(function(e)
{
    e.preventDefault();
    noScrollAction = true;
    
    $('html, body').stop().animate(
    { 
        scrollTop: 1034
    },
    {
        duration: 300,
        complete: function()
        {
            temp = true;
            noScrollAction = false;                   
        }
    });
});
 
 
$(window).scroll(function()
{
    if(!temp)
    {
        if(!noScrollAction)
        {
            console.log('никогда не покажусь при клике на кнопку!') 
        }
    }
    else 
    {
        temp = false;
    }
});
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.07.2015, 00:20
Помогаю со студенческими работами здесь

Управление анимациями Animate.css с помощью jQuery
Всем привет. Никак не могу разобраться с setInterval и setTimeout Суть такая, хочу сделать после полной загрузки сайта появление...

Callback работает не правильно jQuery
При создании слайдера столкнулся с тем что callback функция запущенная внутри функции animate() выполняется примерно на 400мс раньше...

This в callback функции jQuery.post
Нужно изменить поля объекта, который вызвал post запрос. Но в функции this указывает на что-то другое. Как обратиться к экземпляру объекта...

JQuery callback при изменении стиля, Реально ли?
Элементу присваивается стиль, напр. $('.element').css("color","white"); возможно ли сделать callback вызов функции по завершению...

Animate в Jquery
Добрый день. Нужна помощь с учебной задачей, Звучит примерно так: После щелчка по квадрату левая сторона квадрата движется к неподвижной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой
Programma_Boinc 10.04.2026
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой Если на Windows стоит дискретная NVIDIA или AMD — можно отдать её вычислительную мощность реальным исследованиям. . . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru