1、一个总的div,里面包括一个button按钮和一个浮层div
2、知识点:<input type='checkbox'>允许你为表单中(或不在表单中)的提交项选择一个单一值。
1、让浮层相当于点击按键进行绝对定位,同时给到点击按钮相对定位
2、white-space:nowrap(文本不会换行,在同一行继续直到遇到
<br>
标签)3、::before建立一个红色的三角形,::afterj建立一个白色的三角形
1、监听clickMe事件,触发浮层出现。但当我们点击页面中为啥没有打印出1,这是因为我们误以为body就是整个页面,给body一个边框就可以看到body范围,这是我们可以直接监听document,这就是我们要监听的范围。
1、当鼠标点击“点我”,浮层没有再出现了,这是因为当我点击“点我”时,同时把document的点击事件执行了(先从捕获阶段开始问,button被点了,问body要做什么吗,body说因为没有函数要执行的直接到冒泡阶段,问button要执行什么吗,button说没有啥执行的,问body(你的button被点击了)要做什么吗,body说要我这里有个函数要执行,马上就执行这个函数)
1、添加了e.stopPropagation(),当点击button时,就阻止通知body执行点击事件,这时浮层就可以出现了,再点击页面任意地方就可以隐藏浮层
1、让阻止函数放在div上,新增一个checkbox的复选框,为了能让我们点击选中复选框,当点击浮层自身不会消失,才能选中复选框,实现了点击浮层自身不会消失,只有点击页面才能消失。
1、
$(popover).show()
实现了点击button事件,浮层就出现。2、当我们有多个点击事件,就有很多事件在监听document,这就很浪费内存。l节省内存方案,这时我们利用JQurey来做。
1、用e.stopPropagation()阻止传播,可以实现本节内容,false就不行因为false是直接阻止事件发生,两者区别不一样。
1、
$(popover).hide()
实现浮层的隐藏功能1、将document中的on改成one,就可以实现每触发一次点击事件,只实现一次document监听。
1、当我们把上述阻止事件取消,同样实现不了本节的功能,只要有函数在她的处理队列就会执行这个函数,不管什么时候加的。
方案二
除了上面阻止方法,可以利用闹钟进行控制。点击button,先触发show(),再到页面中的$(document).on()...d
,最后才到闹钟事件。