自定義函數(shù)
function isParent (obj,parentObj){
while (obj != undefined && obj != null && obj.tagName && obj.tagName.toUpperCase() != 'BODY'){
if (obj == parentObj){
return true;
}
obj = obj.parentNode;
}
return false;
}
dom apicontains()
最早由IE提出,現(xiàn)在大多數(shù)瀏覽器都支持,除了(火狐)
這里console.log(node.contains(node)) //true
實(shí)際應(yīng)用##
點(diǎn)擊指定區(qū)域來控制側(cè)邊欄的展示與隱藏.
這個同樣可以用css的z-index來做,但是用js似乎更純粹
document.addEventListener('click', (evt) => {
evt.preventDefault()
let containner = document.querySelector('.containner')
let pannel = document.querySelector('.child')
//如果點(diǎn)擊容器內(nèi)除側(cè)邊欄自身以外的區(qū)域,側(cè)邊欄隱藏
if (containner.contains(evt.target) && pannel && !pannel.contains(evt.target)){
$scope.ifShow = false
}
$scope.$apply()
})
這里$scope.$apply()語句放在if循環(huán)內(nèi)會失效(值并沒有同步回視圖)具體解釋未知,先留個坑