主要代码如下:
$("body").click(function(e) {
if (!$(e.target).closest(".tk,#s1").length) {
$(".tk").hide()
}
});
其中,$("body").click(function(e){}表示为页面的body注册点击事件,当点击页面主体内容时执行函数里面的代码。
e.target和this都是DOM对象,this是可以变化的,比如说多个标签同时使用一个函数,就可以用this来获取标签中的某一个的属性。e.target是不会变化的,它永远是直接接受事件的目标DOM元素。
closest()方法返回被选元素的第一个祖先元素。该方法与parents()类似,都是向上遍历DOM树。不同的是,closest()是从当前元素开始,沿DOM树向上遍历,并返回匹配所传递的表达式的第一个单一祖先,返回包含零个或一个元素的jQuery对象。而parents()则是从父元素开始,沿DOM树向上遍历,并返回匹配所传递的表达式的所有祖先,返回包含零个、一个或多个元素的 jQuery 对象。
此处的.tk,#s1表示弹出框或者其他想要排除的元素,点击除这些之外的元素执行方法,隐藏弹出框。