3 回答
TA贡献1757条经验 获得超7个赞
雷蒙德·陈(Raymond Chen)讨论了单点对点双击的一些含义 -尽管他在Windows环境中进行交谈,但他所说的与基于浏览器的UI设计有关。
基本上,双击后执行的操作应该是单击后的合理做法。因此,例如,在桌面UI中,单击选择一个项目,然后双击将其打开(例如,打开文件或启动应用程序)。用户将不得不选择该文件以将其打开,因此,在单击双击动作之前执行单击动作并不重要。
如果您的UI组件的双击动作与单击动作完全不相关,那么一旦系统意识到它实际上是双击,就有必要防止单击动作的发生,那么您真的应该重新考虑一下设计。用户会发现它笨拙且违反直觉,因为它不会以习惯习惯的方式起作用。
如果您仍然想这样做,那么您要么必须使用去抖技术(在这种情况下,所有单击操作都会被延迟),要么实施某种机制,从而使双击处理程序撤消由单击处理程序完成的工作。
您还应该注意,某些用户设置了非常长的双击时间。例如,有关节炎之手的人在其系统偏好设置中可能有超过一秒钟的双击时间,因此,基于您选择的任意时间段的防弹跳技术将使那些人无法访问UI组件进行单击操作会阻止执行双击操作。据我所知,“撤销单击时刚发生的事情”技术是唯一可行的解决方法。
TA贡献1712条经验 获得超3个赞
jQuery Sparkle通过实现singleclick自定义事件,为此提供了一种简洁的解决方案。通过这样做,您可以像使用其他任何事件一样使用它,因此:
$('#el').singleclick(function(){});
// or event
$('#el').bind('singleclick', function(){});
它还为一系列点击的最后和首次点击提供自定义事件。而lastclick自定义事件实际上会将点击次数传递回去!所以你可以做到这一点!
$('#el').lastclick(function(event,clicks){
if ( clicks === 3 ) alert('Tripple Click!');
});
您可以在此处找到用于定义自定义事件的源代码。
它是AGPL许可下的开源软件,因此您可以放心地从中获取所需的东西!:-)它也每天都在积极开发,因此您永远不会缺少支持。
但最重要的是,它是一个DRY插件/效果框架,可让您更轻松地开发插件和扩展。因此,希望这有助于实现该目标!
添加回答
举报