Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Какое событие наступает при соприкосновении двух <div> тегов? (https://javascript.ru/forum/misc/46752-kakoe-sobytie-nastupaet-pri-soprikosnovenii-dvukh-div-tegov.html)

koderman 22.04.2014 14:58

Какое событие наступает при соприкосновении двух <div> тегов?
 
Как вывести алерт при соприкосновении красного блока с зелёным?? Какое должно быть условие?

http://jsfiddle.net/xLa9m/1/
(Жмите на стрелки вправо, влево для управления квадратиком.)

depp 22.04.2014 15:37

http://jsfiddle.net/xLa9m/3/

koderman 22.04.2014 23:12

Такой вариант нашёл. http://jsfiddle.net/xLa9m/11/
С методом offset()
Нормальный метод? Или нужны доработки?

depp 22.04.2014 23:22

а чем вас мой метод не устроил?
http://jsfiddle.net/xLa9m/3/

depp 22.04.2014 23:56

http://jsfiddle.net/xLa9m/13/
вот чутка подправил

koderman 23.04.2014 01:56

Ага. Классная версия подправленная. Спасибо.
Я тренируюсь. Сделал свою версию, она почему то не так работает.
http://jsfiddle.net/xLa9m/18/
При соприкосновении алерт не вылетает. Вылетает только тогда когда назад нажмёшь.
Почему так происходит?

jsnb 23.04.2014 03:06

Цитата:

Сообщение от koderman (Сообщение 308884)
Почему так происходит?

Потому что на момент вызова функции проверки анимация еще не завершилась и координаты берутся те которые были в начале анимации.
Функцию проверки надо вызывать каллбеком после завершения анимации, например так:
$(".gamer").animate({"left" : "-=50px"}, 200, check);

рони 23.04.2014 03:17

:write: чтобы уж "совсем точно" )))
$(".gamer").animate({"left" : "-=50px"}, {duration:200, step : check});
http://jsfiddle.net/xLa9m/19/

koderman 23.04.2014 07:21

рони, здесь ведь алерт два раза вызывается. Хотя задан один раз.
Если запускать через complete, то алерт выскакивает уже после окончания анимации. http://jsfiddle.net/xLa9m/20/ Не подходит.

рони 23.04.2014 08:39

koderman,
на всякий случай при step алерт запускается раз 10 -15 -- если конечно использовать console.log вместо alert )))

koderman 23.04.2014 12:45

Нет. Тут что то не так.
Вот я вместо алерта добавляю надпись ОДИН раз, а она выводится МНОГО раз. http://jsfiddle.net/xLa9m/22/
Срабатывание нужно немедленное, так что параметр complete не подойдёт.
Почему много раз вставляется текст?

Чем меньше duration, http://jsfiddle.net/xLa9m/24/ тем меньше надписей. Как исправить это?
Допустим я хочу длинный duration и только одно выполнение функции, а не кучу.

koderman 23.04.2014 18:19

Вот. http://jsfiddle.net/xLa9m/25/
Надо ставить выход из функции после первого шага.


Часовой пояс GMT +3, время: 07:33.