为了添加事件,我们可以使用这个简单的第一个解决方案:
function AddEvent(html_element,event_name,event_function) { if(html_element.attachEvent) //Internet Explorer html_element.attachEvent("on" + event_name,function() {event_function.call(html_element);}); else if(html_element.addEventListener) //Firefox & company html_element.addEventListener(event_name,event_function,false); //don't need the 'call' trick because in FF everything already works in the right way }
function AddEvent(html_element,event_function) { var old_event = html_element['on' + event_name]; if(typeof old_event !== 'function') html_element['on' + event_name] = function() { event_function.call(html_element); }; else html_element['on' + event_name] = function() { old_event(); event_function.call(html_element); }; }
这些都是跨浏览器,可以这样使用:
AddEvent(document.getElementById('some_div_id'),'click',function() { alert(this.tagName); //shows 'DIV' });
由于我有感觉attachEvent / addEventListener在更多的事件处理实现中使用,我想知道:
使用第二种解决方案有哪些缺点/缺点,我可能会更好地意识到?
我可以看到两个,但我对更多的兴趣(如果有的话):
>第二个解决方案通过在线添加事件来拧紧元素的innerHTML
>使用第二个解决方案我可以轻松地删除与某个事件类型相关联的所有功能(html_element [‘on’event_name] = null),但是我不能使用detachEvent / removeEventListener来完全删除一个特定的函数.
任何答案如:“使用jQuery”或任何其他FW是无意义的!