這段代碼不理解
function delegateEvent(target,event,fn){
??????? addEvent(document,event,function(e){
??????????? if(e.target.nodeName==target.toUpperCase()){
??????????????? // nodename獲取節(jié)點名稱(為大寫),toUpperCase()將目標改為大寫
??????????????? fn.call(e.target);
??????????? }
??????? });
??? }
不太懂
1、addEvent(document,event,function(e){},其中id參數(shù)為document,意思是點擊屏幕就會觸發(fā)function(e){}?這有什么意義?
2、if(e.target.nodeName==target.toUpperCase())會有不相等的情況嗎?
3、fn.call(e.target);用fn取代e.target?e.target是什么?取代之后有什么用?
2016-06-24
addEvent(document,event,function(e){}為了獲取觸發(fā)元素
//e.target.nodeName顯示是哪一個元素觸發(fā)了事件(可參照http://www.w3school.com.cn/jquery/event_target.asp)
//target.toUpperCase()是目標參數(shù)元素的大寫形式
call的意思是調(diào)用一個對象的一個方法,以另一個對象替換當前對象。e.target就是觸發(fā)點擊事件的元素,即用fn方法替換掉e.target(好吧,第三條我在胡言亂語,我的理解就是把fn調(diào)用出來,否則fn就無用武之地了。。)
2016-06-25
大概理解了吧,非常感謝
1、理解應該沒有問題
2、e.target.nodeName中的target是個屬性,后面的target是個參數(shù),點擊屏幕時判斷被點擊元素的節(jié)點和傳進來的參數(shù)是否相同
3、fn.call(e.target)應該是改變了this的指向吧,如果直接調(diào)用fn,后面var keyword=this.innerHTML;中的this并不能指向誰吧,fn.call(e.target)讓keyword等于被點擊內(nèi)容的innerHTML,應該是這個作用吧