2015-05-29 81 views
0

工作,我有以下代码:隐藏DIV的时候点击它之外没有在iPad上

$(document).on('click touch', function(e) { 
    var nav = $(e.target).closest('.nav-js-trigger'); 
    var hidden = $(e.target).closest('.show-nav') 

    if (nav.length > 0) { 
     $('.show-nav').not(nav.next().toggleClass('show-nav')).removeClass('show-nav'); 
    } else if (hidden.length === 0) { 
     $('.show-nav').removeClass('show-nav'); 
    } 
}); 

,如果用户点击它外面隐藏菜单股利。要测试此:

  1. 点击菜单链接。
  2. 点击黄色格外。

div应该隐藏。

问题是,这不适用于iPad。为什么?

这是FIDDLE

我已添加click touch并且还尝试过touchendtouchstart

+1

鉴于这一问题的复杂性,我将有资格当这个赏金50分。 –

+0

你有没有试过把监听器放在'document.documentElement','document.body'和/或'window'上?我建议使用'touchend'。另请尝试香草Javascript [如苹果建议](https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html):'document.documentElement.addEventListener(“touchend” ,函数(e){...},false);' – Blaise

回答

1

得到了一个消息:

评论仅5分钟

编辑因此,我将它张贴作为一个答案,而不是。

  • 我建议你使用的测试touchend,该touch事件不存在。也许你的测试失败,因为浏览器缓存?
  • 您是否还尝试过把聆听者放在document.documentElement,document.body和/或window
  • 尝试香草的JavaScript like suggested by Apple

    document.documentElement.addEventListener("touchend", function(e){ alert('hello world'); }, false); 
    

Fiddle with document.documentElement and touchend

+0

有趣。你能不能更新小提琴,以便我可以在iPad上测试这个建议:http://jsfiddle.net/q6qcknrb/2/ –

+0

我在理论上增加了一个应该在iPad上工作的小提琴。如果这不起作用,你也可以尝试使用jQuery 1.x而不是2.x:https://jsfiddle.net/mdyr7x4e/ – Blaise