powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Почему событие 'mouseup' не возникает для потомка?
14 сообщений из 14, страница 1 из 1
Почему событие 'mouseup' не возникает для потомка?
    #39179754
skywriter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть пример . Предполагается, что когда перетаскиваешь элемент из правого столбца в левый, то 'mouseup' возникает прежде всего для левого столбца (div '#graph'), что должно быть отражено в нижнем индикаторе словом 'cleared'. Но это событие возникает только для предка ('#main'). WTF?
...
Рейтинг: 0 / 0
Почему событие 'mouseup' не возникает для потомка?
    #39179886
skywriter,

надо организовать Drag and Drop ?
...
Рейтинг: 0 / 0
Почему событие 'mouseup' не возникает для потомка?
    #39179900
skywriter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прежде всего, понять механизм. Куда девается событие mouseup, и почему оно таки возникает (в элементе '#graph'), если ввести на него курсор без элемента '.device'?
Про Drag'n'Drop я читал. Но там не предполагается свободное перемещение элемента внутри другого элемента.
...
Рейтинг: 0 / 0
Почему событие 'mouseup' не возникает для потомка?
    #39179955
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skywriterЕсть пример . Предполагается, что когда перетаскиваешь элемент из правого столбца в левый, то 'mouseup' возникает прежде всего для левого столбца (div '#graph'), что должно быть отражено в нижнем индикаторе словом 'cleared'. Но это событие возникает только для предка ('#main'). WTF?
Не совсем понятно почему ты ждешь событие в graph ...
Ведь курсор находится на дочернем элементе main . Сначала событие будет в самом элементе, а далее будет всплывать в родителях...
...
Рейтинг: 0 / 0
Почему событие 'mouseup' не возникает для потомка?
    #39179959
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skywriterПрежде всего, понять механизм.
Так он вроде бы прост...
http://javascript.ru/tutorial/events/intro#poryadok-srabatyvaniya-sobytiy

Там правда нет смещения детей относительно родителей... Но это сути не меняет.

skywriterКуда девается событие mouseup, и почему оно таки возникает (в элементе '#graph'), если ввести на него курсор без элемента '.device'?
Событие никуда не девается.
Просто первый раз оно всплывает в другом элементе, а второй раз просто срабатывает в graph .
...
Рейтинг: 0 / 0
Почему событие 'mouseup' не возникает для потомка?
    #39179963
skywriter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa, потому что:
1) '#main' является предком '#graph' ('#graph' бирюзовый, '#main' белый).
2) событие 'mousemove' таки возникает в '#graph', это видно в бирюзовому индикатору внизу.
...
Рейтинг: 0 / 0
Почему событие 'mouseup' не возникает для потомка?
    #39179966
skywriter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaСобытие никуда не девается.
Просто первый раз оно всплывает в другом элементе, а второй раз просто срабатывает в graph .
Если оно никуда не девается, то почему при отпускании кнопки в нижнем бирюзовом индикаторе не появляется надпись 'cleared'?
...
Рейтинг: 0 / 0
Почему событие 'mouseup' не возникает для потомка?
    #39179979
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skywriterkrvsa, потому что:
1) '#main' является предком '#graph' ('#graph' бирюзовый, '#main' белый).
Но ты же его выключаешь...

Код: javascript
1.
2.
3.
4.
function clear2(evt) {
  $('#indicator2').text('cleared');
  evt.stopPropagation();
}
...
Рейтинг: 0 / 0
Почему событие 'mouseup' не возникает для потомка?
    #39179983
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skywriterkrvsa, потому что:
1) '#main' является предком '#graph' ('#graph' бирюзовый, '#main' белый).
Это не о чем не говорит... События нет в graph .

Изначально ты работаешь с device ... Они к graph никакого отношения не имеют...
...
Рейтинг: 0 / 0
Почему событие 'mouseup' не возникает для потомка?
    #39179987
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skywriterЕсли оно никуда не девается, то почему при отпускании кнопки в нижнем бирюзовом индикаторе не появляется надпись 'cleared'?
Событие возникает в device ... Потом в devices ... Ну и потом в main ...

Правда ты используешь остановку событий... Т.о. останавливая их.

Весь твой код это пример говнокодинга, потому и понять зачем ты там такое натворил не так просто.
Так конь не ходит. (с)
...
Рейтинг: 0 / 0
Почему событие 'mouseup' не возникает для потомка?
    #39180003
skywriter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaПравда ты используешь остановку событий... Т.о. останавливая их.
Останавливаю в обработчике clear2, чтобы оно после срабатывания в #graph то же событие по иерархии DOM не возникало в #main. Но обработчик clear2 не вызывается, что очевидно (чувствую себя адвокатом какого-нибудь российского чиновника).

krvsaСобытие возникает в device... Потом в devices... Ну и потом в main...
1) Тогда почему 'mousemove' возникает в #graph, ведь он не лежит в ветке device->devices->main?
2) Почему 'mousemove' возникает в #graph, а 'mouseup' в #graph не возникает?
...
Рейтинг: 0 / 0
Почему событие 'mouseup' не возникает для потомка?
    #39180051
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаем исследования...

skywriter1) Тогда почему 'mousemove' возникает в #graph, ведь он не лежит в ветке device->devices->device?
В какой именно момент времени?
Например, когда тащишь элемент device работает только mousemove в device ...

Это видно по тому, ч то не срабатывает твой
Код: javascript
1.
2.
3.
4.
function show2(evt) {
  var text = 'pageX=' + evt.pageX + ' pageY=' + evt.pageY;
  $('#indicator2').text(text);
}


Он начинает работать, только когда избавляешься от device и просто ерзаешь курсором по graph ...

skywriter2) Почему 'mousemove' возникает в #graph, а 'mouseup' в #graph не возникает?
Не возникает оно в graph . По той же причине, что и mouseup... Пока твой курсор находится на device .
...
Рейтинг: 0 / 0
Почему событие 'mouseup' не возникает для потомка?
    #39180053
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибочное копирование...
krvsaНапример, когда тащишь элемент device работает только mousemove в device ...
Читать как
Например, когда тащишь элемент device работает только mousemove в main ...
...
Рейтинг: 0 / 0
Почему событие 'mouseup' не возникает для потомка?
    #39180322
skywriter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaОн начинает работать, только когда избавляешься от device и просто ерзаешь курсором по graph ...
Верно. Если курсор вести медленно, то не срабатывает в graph. У меня срабатывало, т.к. водил быстро.

Тогда как правильно поймать mouseup над graph? Первое, что приходит на ум - это в обработчике mouseup в main проверять координаты курсора. Но это выглядит как костыль (по крайней мере в desktop UI так никогда не делается).
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Почему событие 'mouseup' не возникает для потомка?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]