为了添加事件,我们可以使用这个简单的第一个解决方案:
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是无意义的!
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。