1.4 事件代理
事件使得网络应用可以工作,我最爱事件,尤其是定制事件。它的存在,使得用户不需要接触核心代码就可以使产品具有更好的可拓展性。但主要的问题(其实也是它的优势)在于,事件会被HTML删除:对元素添加了事件监视器后它将被激活,但在HTML中无法表示这种情况。可以这样抽象地来考虑(这对初学者可能有困难):诸如IE6之类的浏览器内存问题较多,事件处理量大,因此不要使用太多的事件处理是明智的选择。
这里就是事件代理 的来源。当某一特定的元素或者其上DOM层的所有元素发生某一事件时,可以通过单一的处理程序对父元素进行处理来简化事件处理过程,而不是使用大量的程序。
我的意思是什么?比如说想要获得一个链接列表,而且想要通过函数的调用而不是通过加载来获得,其HTML实现方法如下:
通常事件处理程序是在整个链接中使用循环:
也可通过一个事件处理程序来实现:
因为单击事件发生在列表中所有的元素之上,所以你所要做的就是将节点Name与 需要响应事件的元素进行对比。
说明:以上例子在IE6浏览器中会运行失败。对于IE6,需要使用事件模型而不是W3C,这就是我们在这种情况下使用库的原因。
这种方法的好处在于可以使用单独的事件处理程序。例如,想要在列表中动态地进行添加操作,如果使用事件代理,则不需要进行任何改变,只需在事件处理过程中重新分配处理程序并对列表重新进行循环操作就可以了。
时间: 2024-09-20 19:10:03