Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Выход из объекта и поднятие мыши (https://javascript.ru/forum/jquery/49554-vykhod-iz-obekta-i-podnyatie-myshi.html)

Nupster 18.08.2014 14:31

Выход из объекта и поднятие мыши
 
Добрый день.
Есть ли возможность реализовать событие "поднятие мыши", если курсор находится вне объекта?

Пример: Зажали мышь внутри какого-то элемента, сдвинули мышь за край элемента, отжали мышь. Как отследить это и запустить свою функцию?
.mouseleave() не подходит, т.к. обработает только выход за пределы, независимо от того зажата мышь или нет.

Заранее спасибо.

tsigel 18.08.2014 14:34

На mousedown проверяем находимся ли мы в нужном элементе, если да - начинаем слушать mouseleave. Первый mouseleave - то что вам нужно. Не забудьте отписаться от события на mouseup

tsigel 18.08.2014 14:36

+ вриант проще и немного хуже: делаем глобальный флаг о том зажата ли кнопка, на mousedown делаем его true, на mouseup - false. на mouseleave смотрим равен ли наш флаг true

Viral 18.08.2014 14:49

не mouseleave, а mouseup нужно, по этому событию проверяйте, находится ли курсор в координатном поле необходимого объекта

tsigel 18.08.2014 14:52

Viral,
На сколько я понял автору нужен именно момент покидания элемента с зажатым курсором, по вашему варианту этого события не получить.

Viral 18.08.2014 14:53

tsigel,
Цитата:

Есть ли возможность реализовать событие "поднятие мыши", если курсор находится вне объекта?
очевидно же, что сначала курсор с нажатым кликом выходит за предела объекта, а потом клик отпускают..

tsigel 18.08.2014 14:55

Viral,
Да, вы правы. что-то я не так прочел.

Viral 18.08.2014 14:56

Nupster,
а вам, раз используете jQuery, проще было бы что-то такое поюзать

Nupster 18.08.2014 14:59

$('#elem').mouseleave(checkMouseLeave());

function checkMouseLeave()
{
	document.onmouseup = fclear;
	document.addEventListener("onmouseup", fclear, false);	
}


Вот так сделал. Вроде бы работает. Спасибо за помощь.

Pavel M. 18.08.2014 15:07

если простенько

http://learn.javascript.ru/play/0oUJcb


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