Html 元素之外的点击事件

前端写脚本绑定某事件已经司空见惯了,突然有个需求需要点击某个元素之外触发一些动作呢?比如,写一个模拟的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了!