文件。点击触摸设备的function

我有一个使用jQuery工作的子导航 – 用户点击顶级列表项,例如触发下拉菜单的“服务”。 通过点击“服务”链接来切换下拉菜单。 我已经做到了这一点,用户可以点击屏幕上的任何地方,将下拉菜单切换到closures状态。 但是,由于该网站是响应,我希望用户能够点击(触摸)在屏幕上的任何地方来closures下拉,但我的问题是,它不适用于触摸设备。

我的代码文件点击安装程序是:

$(document).click(function(event) { if ( $(".children").is(":visible")) { $("ul.children").slideUp('slow'); } }); 

我假设document.click可能无法在触摸设备上工作,如果没有,有什么解决方法来实现相同的效果?

谢谢

点击或触摸触发function,你可以改变这个:

 $(document).click( function () { 

对此:

 $(document).on('click touchstart', function () { 

或这个:

 $(document).on('click touch', function () { 

touchstart事件触发元素后触发, touch事件更像是一个“轻敲”,即表面上的一个单一的接触。 你应该真的尝试每个这些看看什么最适合你。 在某些设备上, touch可能有点难以触发(这可能是一个好的或坏的事情 – 它可以防止计算拖动,但意外的小拖动可能会导致它不被触发)。

touchstart或touchend不好,因为如果你滚动页面,设备做的东西。 所以,如果我想closures一个窗口,点击或单击元素外,并滚动窗口,我已经完成:

 $(document).on('touchstart', function() { documentClick = true; }); $(document).on('touchmove', function() { documentClick = false; }); $(document).on('click touchend', function(event) { if (event.type == "click") documentClick = true; if (documentClick){ doStuff(); } }); 

你可以使用jqTouch或jQuery的移动 ? 在那里处理触摸事件要容易得多。 如果没有,那么你需要模拟点击触摸设备,请按照这篇文章:

iphone触摸事件,在JavaScript的

一个触摸演示

更多在这个线程

要在任何地方应用,你可以做类似的事情

 $('body').on('click', function() { if($('.children').is(':visible')) { $('ul.children').slideUp('slow'); } });