Prototype程序库对标准的addEventListener和removeEventListener方法提供了浏览器兼容方案,分别成为Event.observe和Event.stopObserving。
例如:
Event.observe(element,'event','eventlistener);
Event.stopObserving(element,'event',eventlistener);
它们能够针对不同的浏览器调用适当的方法来添加和删除事件监听器,同时确保必要的环境清理工作,有效的避免了ie中的时间监听器内存泄露问题。
但是,Prototype程序库没有将this的值自动指向应用事件监听器的元素,而是通过为每个函数添加一个bindAsEventListener方法来精确的指定this关键字所指向的元素。
例如:
var myEventListener=eventListener.bindAsEvenetListener(element);
Event.observe(element,'event',myEventListener);
Event.stopObserving(element,'event',myEventListener);
对于阻止事件冒泡和事件的默认行为Prototype提供了统一的方法:Event.stop('event');
jQuery程序库管理事件监听器的代码非常简单,只用bind和unbind方法就能够解决添加和删除事件监听器做设计的令人头疼的浏览器兼容问题。
例如:
$('#id').bind('event',eventlistener);
$('#id').ubind('event',eventlistener);
jQuery还提供了更简单的方法:
$('#id').click(clicklistener);
甚至,还可以为列表中的每个节点添加时间监听器:
例如:
$('a[href]').click(clicklistener);