一般網(wǎng)上的代碼都是下面這個樣子:
var oUl = document.getElementById("ul1");
oUl.onclick = function(ev){
var ev = ev || window.event;
var target = ev.target || ev.srcElement;
if(target.nodeName.toLowerCase() == 'li'){
alert(123);
alert(target.innerHTML);
}
}
但是如果你的li標(biāo)簽里嵌套了其他標(biāo)簽,比如:
<ul id="ul1">
<li><span>111</span></li>
</ul>
那么當(dāng)你點擊“111”的時候上面的js寫法就是無效的好港,因為你直接點擊的并不是li標(biāo)簽。所以在這里我們還需要判斷點擊的標(biāo)簽的父元素是不是li疯暑,所以這里的代碼中要加一個while循環(huán):
var oUl = document.getElementById("ul1");
oUl.onclick = function(e){
var e = e || window.event;
var target = e.target || e.srcElement;
while(target.tagName !== 'LI'){
target = target.parentNode;
if(target === oUl){
target = null;
break;
}
}
if(target){
console.log('你點擊了ul中的li');
}else{
console.log('你點擊的不是ul中的li');
}
}