jQuery移动点击事件触发vclick

时间:2015-08-28 10:13:11

标签: javascript android jquery ios jquery-mobile

我正在创建一个应该可以在移动设备和PC上运行的jQuery移动应用程序。我使用jQuery Finger插件(http://ngryman.sh/jquery.finger/)来检测手指事件:

$('body').on('tap', 'image', function(e) {
    console.log(e);
});

问题是tap事件被触发两次。

[1] v.Event {type: "tap", x: 600, y: 374, orientation: null, end: false…}

[2] v.Event {originalEvent: v.Event, type: "tap", timeStamp: 1440756290573, jQuery183031088717421516776: true, toElement: image#7…}

当我在开发者工具中折叠第二个事件信息时,类型会显示" vclick"。

...
shiftKey: false
srcElement: image#7
target: image#7
timeStamp: 1440756501237
toElement: image#7
type: "vclick"
view: Window
which: 1
__proto__: Object
...

如何防止这种情况发生,以便事件只运行jQuery手指点击事件而不是vclick?

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以通过检查事件的特定字段来区分事件(忽略它们或进行特殊处理)。

在这种特殊情况下,我看到了event.originalEvent字段的区别。因此,为了只处理第二个事件,你可以使用这样的东西(originalEvent被替换为函数的参数$(document).on('tap', function(event, originalEvent) { if (originalEvent) { console.log('Time to handle event'); //code code code } else { console.log('Ignoring event'); } }); $(document).trigger('tap'); $(document).trigger('tap', ['v.Event']);用于测试目的):

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
$this->call('POST', 'accounts', [], [], [], [], $accounts)