点击某元素之外的地方,隐藏该元素,点击自身不受影响(jQuery)
前提: 点击一个登录按钮,弹出登录框,该登录框的背景铺满网页(登录框是背景的子元素),点击登录框之外的背景,隐藏该登录框与背景,点击自身不受影响
解决方法:
$('.login').bind('click', function (e) { // .login为登录/注册按钮的类名
e.stopPropagation() //阻止冒泡
$('.loginBig').fadeIn() //fadeIn()为ES语句,淡入,直接显示和隐藏为show()、hide()
})
$(document).bind('click', function (e) {
var e = e || window.event
var elem = e.target || e.srcElement
while (elem) {
// 下面的className是类名,如果是ID选择器,改为elem.id
// 因为该例子中还有注册的弹框,也是灰色背景的子元素,因此有||符号,写了两个,如果仅有一个子元素
//改为 if (elem.className && elem.className == 'loginMain' {
//如果有多个子元素,继续添加||符号
if (elem.className && (elem.className == 'loginMain' || elem.className == 'registerMain')) {
return //如果是test对象则直接结束,不隐藏对象。test的click事件先于此代码执行
}
elem = elem.parentNode
}
$('.loginBig').fadeOut() //淡出
})