前端写脚本绑定某事件已经司空见惯了,突然有个需求需要点击某个元素之外触发一些动作呢?比如,写一个模拟的select下拉,一般都是点击下拉,弹出下拉选项,再点击下拉的某个选项,下拉收起。如果用户点击下拉,然后就不想点下拉选项了,这时用户点击这个下拉之外的任何东西,这个下拉都应该收起。
jq如何实现这个功能呢?其实也不难,大概思路就是,在document上面绑定一个事件,当用户触发document的事件时,判断一下目标元素是什么,然后再执行相应的操作就行了。
下面看一下具体的代码:
$(document).bind("click",function(e){ var target = $(e.target); if(target.closest("#sibader").length == 0){//点击id为sibader之外的地方触发 //do something... } })
同理,如果是点击某空白地方,然后触发什么事件的也是这样写,只是把$(document)换回你想要的dom节点就ok了!