<div?id="div">
<a?class="aa"??id="btn1"?class="btn"?href="www.baidu.com">1</a>
<a?class="aa"?id="btn2"?class="btn"?href="www.baidu.com">2</a>
<a?class="aa"?id="btn3"?class="btn"?href="www.baidu.com">3</a>
<a?class="aa"??id="btn4"?class="btn"??href="www.baidu.com">4</a>
</div>
var?div?=?document.getElementById('div')
function?bindEvent(elem,type,selector,fn){
if(fn?==?null){
fn?=?selector;
selector?=?null;
}
elem.addEventListener(type,function(e){
var?target?=?e.target;
e.preventDefault()
if(selector?=?null){
fn(e)
}else{
if(target.matches(selector)){
fn.call(target,e)
}
}
})
}
bindevent(div,?'click',?'a',?function(e)?{
alert(this.innerHTML)
})
??????????????????????//部分代碼修改后
????????????elem.addEventListener(type,?function(e)?{
???????????????var?target?=?e.target;
???????????????e.preventDefault()
??????if(selector)?{
???if(target.matches(selector))?{?
fn.call(target,?e)
??}
}?else?{
fn(e)
}
})
如上代碼,之前沒有效果,后來只是將判斷的順序變了下,就好了,這是什么原因?求大神指點
JS代理事件綁定
慕圣9424722
2017-10-15 20:21:37