Comments 14
Давным давно на просторах stackoverflow:
o — объект для кторого проводится действие
ev — объект (например event у jQuery, или любой другой — в нем будет меняться свойство type)
ev.type = "_click" — одно нажатие
ev.type = "_dblclick" — двойное нажатие
работать так:
У Вас излишне сложно, хотя более правильно. Но это далеко не всегда нужно.
function mouseClickDebounce( o, ev, handler ) {
if ( o.getAttribute( "data-_clk_" ) ) {
clearTimeout( Number( o.getAttribute( "data-_clk_" ) ) );
o.removeAttribute( "data-_clk_" );
ev.type = "_dblclick";
handler.call( o, ev );
}
else {
o.setAttribute(
"data-_clk_",
String( setTimeout(
function() {
o.removeAttribute( "data-_clk_" );
ev.type = "_click";
handler.call( o, ev );
},
200
) )
);
}
}
o — объект для кторого проводится действие
ev — объект (например event у jQuery, или любой другой — в нем будет меняться свойство type)
ev.type = "_click" — одно нажатие
ev.type = "_dblclick" — двойное нажатие
работать так:
$( element ).on(
"click",
function( ev ) {
mouseClickDebounce( this, ev, function( ev ) { alert( ev.type ); } );
}
);
У Вас излишне сложно, хотя более правильно. Но это далеко не всегда нужно.
+2
Это я конечно видел.
Но реализация в виде плагина с некоторыми дополнительными нюансами ( обработка передвижения курсора, и бесшовная обработка событий ) — показалась более оправданной.
Но реализация в виде плагина с некоторыми дополнительными нюансами ( обработка передвижения курсора, и бесшовная обработка событий ) — показалась более оправданной.
0
У Вас излишне сложно, хотя более правильно. Но это далеко не всегда нужно.
Единственный раз столкнулся с реальной необходимостью двойного клика при работе с
canvas
. Ключевым моментом было отслеживать не только время между кликами, но и смещение курсора: активно работая с инструментом click per second может просто зашкаливать.Что касается dblclick, то всегда стараюсь уходить от использования его при проектировании интерфейсов, т.к. он, как минимум, не очевиден.
+1
У меня за все время работы это событие применялось только два раза, и оба — в очень навороченных гридах. Вполне хватало только времени.
А так да, полностью согласен, что использовать надо лишь тогда, когда ооочень необходимо, ввиду неочевидности и сложности действия. Юзабилисты всегда говорят на такой ивент аяяй :)
А так да, полностью согласен, что использовать надо лишь тогда, когда ооочень необходимо, ввиду неочевидности и сложности действия. Юзабилисты всегда говорят на такой ивент аяяй :)
0
Понятное дело что подобный функционал должен применяться только тогда когда он нужен.
В нашем случае он используется так как общий интерфейс приложения ассоциируется с окнами в ОС, и есть определённые «фишки» при использовании клика и дабл.клика — быстрое переключение режимов отображения ( превью, активен, полный размер ) и подобное.
В нашем случае он используется так как общий интерфейс приложения ассоциируется с окнами в ОС, и есть определённые «фишки» при использовании клика и дабл.клика — быстрое переключение режимов отображения ( превью, активен, полный размер ) и подобное.
0
Не совсем понял где на вашем скриншоте нужно кликать дважды. На уменьшенных превьюшках, верно? А что будет, если я просто кликну на превью, без двойного клика?
0
Здесь не отображен режим на два клика.
Я просто хотел показать пример интерфейса в котором такой функционал чаще востребован чем нет.
Но режим «полный размер» вот:
Я просто хотел показать пример интерфейса в котором такой функционал чаще востребован чем нет.
Но режим «полный размер» вот:
0
Самое интересное, что то, куда надо дважды кликнуть для получения режима «полный размер», так и осталось загадкой. :) Просто чисто из любопытства было интересно попытаться понять проблему и решить задачу иным путем. Можно было бы, например, не убирать dblclick, но при этом по одинарному щелчку (по превью) показывать какую-то иконку поверх окна, приглашающую в «полный размер».
0
Прошу прощения что не ответил.
Кликнуть можно по превью и по области вокруг активного контента ( карпет ) как один раз, так и два:
Ну и прочее подобное.
Кликнуть можно по превью и по области вокруг активного контента ( карпет ) как один раз, так и два:
- один раз отображает чуть больше информации и даёт воспроизвести контент ( то-есть быстрый доступ, просмотреть что там к чему и т.д. )
- два раза — то-же самое + связанный контент и полную информацию
Ну и прочее подобное.
0
ИМХО, это проблемы проектирования UI. И в последнюю очередь проблема click\dblclick.
p.s. плюс ко всему dblclick нажатия может регулироваться на уровне ОС.
p.s. плюс ко всему dblclick нажатия может регулироваться на уровне ОС.
+3
Кстати, у современных браузеров есть
(event).detail
, который больше 1, если это даблклик, триплклик или квадруплклик.+1
Спасибо, полезным будет Ваш материал.
Пока еще конечно сталкиваться не приходилось в работе, но думаю еще придется)
Пока еще конечно сталкиваться не приходилось в работе, но думаю еще придется)
0
Sign up to leave a comment.
JQuery — разделение событий onСlick и onDblСlick