js原生事件委托

1.普通的是事件委托  这里有一个兼容性要注意,var e=e|| window.event;var target = e.target || e.srcElement;  都是为了兼容IE

<body>
<ul id="ul1">
    <li>111</li>
    <li>222</li>
    <li>333</li>
    <li>444</li>
</ul>
<script type="text/javascript">
window.οnlοad=function(){
var oUl = document.getElementById("ul1");
oUl.οnclick=function(e){
var e=e|| window.event;
var target = e.target || e.srcElement;
if(target.nodeName.toLowerCase() == "li"){
alert(target.innerHTML)
}
}
}
</script>
</body>


2,子元素每个事件都不相同,

<body>
<div id="box">
        <input type="button" id="add" value="添加" />
        <input type="button" id="remove" value="删除" />
        <input type="button" id="move" value="移动" />
        <input type="button" id="select" value="选择" />
    </div>
</body>
<script type="text/javascript">
var oBox = document.getElementById("box");
oBox.οnclick=function(e){
e = e || window.event;
var target = e.target || e.srcElement;
if(target.nodeName.toLowerCase() == 'input'){
switch(target.id){
case 'add':
alert('添加');
break;
case 'remove':
alert('删除');
break;
case 'move':
alert('移动');
break;
case 'select':
alert('选择');
}
}
}
</script>


3.新增子元素如何事件委托

<body>
<input type="button" name="" id="btn" value="添加" />
   <ul id="ul1">
       <li>111</li>
       <li>222</li>
       <li>333</li>
       <li>444</li>
   </ul>
</body>
<script type="text/javascript">
 var oBtn = document.getElementById("btn");
          var oUl = document.getElementById("ul1");
          var aLi = oUl.getElementsByTagName('li');
          var num = 4;
          
            //事件委托,添加的子元素也有事件
            oUl.onmouseover = function(ev){
                var ev = ev || window.event;
                var target = ev.target || ev.srcElement;
                if(target.nodeName.toLowerCase() == 'li'){
                    target.style.background = "red";
                }
                
            };
            oUl.onmouseout = function(ev){
                var ev = ev || window.event;
                var target = ev.target || ev.srcElement;
                if(target.nodeName.toLowerCase() == 'li'){
                    target.style.background = "#fff";
                }
                
            };
            oBtn.onclick = function(){
                num++;
                var oLi = document.createElement('li');
                oLi.innerHTML = 111*num;
                oUl.appendChild(oLi)
            }
</script>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值