<ul>
<li>文本内容</li>
<li>文本内容</li>
<li>文本内容</li>
<li>文本内容</li>
<li>文本内容</li>
</ul>
<script>
//jquery方法 each循环
$("ul li").each(function(){
$(this).click(function(){
alert($(this).text());
})
})
$(this).click(function(){
alert($(this).text());
})
})
$('li').click(function(){
alert($(this).text());
})
$("ul").on("click","li",function(){
alert($(this).text());
})
//js方法
var ul=document.querySelector('ul');
ul.addEventListener('click',function(even){
if(even.target.tagName.toLowerCase() === 'li'){
alert("你点击了"+even.target.outerText);
}
});
</script>
备注:最后两个方法是jquery和js的事件委托。
1.each在列表数据多的情况下会卡;
2.js方法原理是事件的代理:由于事件会在冒泡阶段向上传播到父节点,因此可以把子节点的监听函数定义在父节点上,由父节点的监听函数统一处理多个子元素的事件。这种方法叫做事件的代理。