js原生事件委托
2017-07-24 11:54
489 查看
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.onload=function(){
var oUl = document.getElementById("ul1");
oUl.onclick=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.onclick=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>
都是为了兼容IE
<body>
<ul id="ul1">
<li>111</li>
<li>222</li>
<li>333</li>
<li>444</li>
</ul>
<script type="text/javascript">
window.onload=function(){
var oUl = document.getElementById("ul1");
oUl.onclick=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.onclick=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>
相关文章推荐
- 原生js事件委托与简单的jquery事件委托方法
- 原生js事件委托
- JavaScript之事件委托实例(附原生js和jQuery代码)
- JavaScript之事件委托(附原生js和jQuery代码)
- 原生js事件批量绑定-事件委托
- 对于原生js中的事件委托解析
- 1.事件委托的原理以及优缺点 2. 手写原生js实现事件代理,并要求兼容浏览器
- js原生事件委托的实现
- JS事件传递参数-Javascript事件动态传参-原生JS事件传递参数-Javascript onclick事件传递参数
- 原生js绑定事件 解绑
- js事件委托和call()作用
- JS中的事件绑定,事件捕获,事件冒泡以及事件委托,兼容IE
- js中的事件委托(转)
- JS事件委托
- JS中如何巧妙的用事件委托
- js事件委托的总结
- Js中的事件委托
- 原生js绑定和解绑事件,兼容IE,FF,chrome
- js委托事件-addEventListeners(冒泡方向)
- js原生拖拽事件(HTML5的拖放 API)