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

Pavel M. 18.08.2014 15:10

Цитата:

Сообщение от Nupster
Вот так сделал

странно, что два раза подписываетесь в коде на событие 'mouseup'
и один раз неправильно

Nupster 19.08.2014 13:55

Цитата:

Сообщение от Pavel M. (Сообщение 326412)
странно, что два раза подписываетесь в коде на событие 'mouseup'
и один раз неправильно

Так 2 раза для разных браузеров, чтобы было кроссбраузерно. Разве неверно? Подскажите как правильно, если не трудно.

Просто в текущем варианте у меня всё работает.

Pavel M. 19.08.2014 14:37

Цитата:

Сообщение от Nupster
Подскажите как правильно, если не трудно

document.onmouseup = function () { ... }

должно везде работать


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