写了一个下拉菜单,在单击空白地方的时候隐藏。

第一时间就是用$(document).click(function(){   //隐藏代码  });

各大浏览器都没问题,唯独iPhone上的不会触发事件。

后来排查了一遍原因发现,Safari中是这样处理事件冒泡的:

1.点击某个DIV或其他元素。

2.发现没有处理该事件,继续往上冒泡。

3.直到冒泡到body下面的子节点为止,还是没有人处理该事件的话,就把该事件丢弃掉。不再往上冒泡。

4.只要在这一条冒泡链当中,有一个节点处理了该事件,它就不会丢弃该事件,会继续往上冒,冒到body 然后document 然后window .

问题发现了,就是必须要有一个人处理这个事件,才会继续往上冒。

那么解决办法就是在body的下级,写个空函数接收一下事件。就行了。

$("body").children().click(function () {

//这里不要写任何代码

});

完美解决!

随机推荐

  1. IOS开发基础知识--碎片27

    1:iOS中的round/ceil/floorf extern float ceilf(float); extern double ceil(double); extern long double c ...

  2. 【JavaEE企业应用实战学习记录】struts国际化

    <%-- Created by IntelliJ IDEA. User: Administrator Date: 2016/10/6 Time: 16:26 To change this tem ...

  3. 【rational rose】用例图

  4. Jquery 对象转json ,Json转对象。兼容浏览器。

    引入jquery 转json库 [ 文件大小为2.2K] <script type="text/javascript" src="https://jquery-js ...

  5. ABP集合帖

    http://www.cnblogs.com/kebinet/p/5341663.html http://www.cnblogs.com/farb/p/ABPAdvancedTheoryContent ...

  6. printk的用法

    printk的用法 内核通过 printk() 输出的信息具有日志级别,日志级别是通过在 printk() 输出的字符串前加一个带尖括号的整数来控制的,如 printk("<6> ...

  7. ansible playbook 变量

    变量优先级 在命令中定义的变量(-e参数指定的) 在inventory中定义的变量(ansible_ssh_user等) 其他变量(role中.play中) 系统通过father_facts定义的变量 ...

  8. knowledge learning things TODO

    加密分区 suricata调研 tor配置 tilda配置 automake / autoconf / libtool 使用 大页内存的深入原理 Memory channels Network Man ...

  9. vux, vue如何控制微信自带的返回按钮,让其返回其他页面?

    <script> import { mapState } from 'vuex' export default{ name: 'clockFx', data () { return { } ...

  10. [Spring Boot] @Component, @AutoWired and @Primary

    Spring boot is really good for Dependencies injection by using Autowiring. Each class instancse in s ...