一般網(wǎng)上的代碼都是下面這個(gè)樣子:
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)你點(diǎn)擊“111”的時(shí)候上面的js寫法就是無效的,因?yàn)槟阒苯狱c(diǎn)擊的并不是li標(biāo)簽。所以在這里我們還需要判斷點(diǎn)擊的標(biāo)簽的父元素是不是li,所以這里的代碼中要加一個(gè)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('你點(diǎn)擊了ul中的li');
}else{
console.log('你點(diǎn)擊的不是ul中的li');
}
}