我有这个:
$('li.clickable').live('click tap', function() {
console.log("hello");
)};
如果我这样听并单击列表项,则会触发两个事件=我得到两个“hellos”。我需要在每次“点击”时触发一个功能,但只需要一次!
有没有办法做到这一点。我不能使用“one”,因为第一次点击后该功能会静音,不是吗?
感谢指针!
修改:
如果我省略点击或点击,该功能仍然会触发两次。有什么方法可以防止这种情况吗?
答案 0 :(得分:1)
jQM文档:
虚拟鼠标事件
我们提供一组“虚拟”鼠标事件,试图抽象出鼠标和触摸事件。这个 允许开发人员注册基本鼠标事件的监听器, 例如mousedown,mousemove,mouseup和click,插件将会 注意在幕后注册正确的听众 以最快的速度为该设备调用侦听器。在 触摸环境,插件保留了触发事件的顺序 在传统的鼠标环境中可以看到,例如,vmouseup就是 总是在vmousedown之前调度,并在vclick之前调用vmousedown, 虚拟鼠标事件也标准化了如何协调 信息是从事件中提取的,因此基于触摸 环境,坐标可从pageX,pageY, screenX,screenY,clientX和clientY属性,直接在 事件对象。vclick
中调度
用于处理touchend或鼠标点击事件的规范化事件。在触摸设备上,此事件将在 AFTER vmouseup。
尝试使用:
$('li.clickable').live('vclick', function() {
console.log("hello");
)};
您还可以测试正在触发的事件
$('li.clickable').live('click tap', function(e) {
console.log("Which Event: "+e.which + " Event Type: "+e.type);
)};
答案 1 :(得分:0)
由于只有在收听click
时您的操作也会触发两次,因此您可能会遇到某些用户或系统怪异。
当电容式触摸屏开始普及并且人们(例如戴着手套)开始双重触发时,我们遇到了各种各样的问题。什么有助于用户双击可能有助于对系统双击:
//global scope:
var triggertimeouts={}
和
$('li.clickable').live('click tap', function() {
if (!triggertimeouts.myclicktap) {
triggertimeouts.myclicktap=window.setTimeout('triggertimeouts.myclicktap=false;',250);
console.log("hello");
}
)};