我们知道js绑定事件用attachEvent和addEventListener;
这两种方式都可以给一个事件绑定多个处理函数,但处理函数是按绑定顺序倒序执行的,而且有添加和删除事件处理函数的方法,就是没有找到获取事件处理函数的方法。
两个问题:
1、如何控制或修改绑定事件的执行顺序,让后绑定的最后执行,或按特定的顺序执行。
2、如何获取一个对象的某事件的所有处理函数,获取后能否重新排序绑定,谢谢各位

解决方案 »

  1.   

    addEventListener是按照顺序执行的,attachEvent是乱序的。。
    1,2是一个问题。
    解决的办法呢,写一个队列,事件绑定函数只有一个,这个函数遍历队列,执行他们。。
      

  2.   

    addEventListener是非ie的,attachEvent是ie的吧。a.attachEvent('onclick',fn).在注册fn的时候,ms没有保存在a的属性中,好像是浏览器来监听一样,所以感觉遍历a的属性也不会找到fn。好像没有方法来获取所有的处理函数。
    lz用到的处理函数比较多,最好的方法是重写一个监听函数,综合addEventListener和attachEvent函数,并且可以把函数名叠加保存在a的一个属性中,比如保存在class属性中便于存取。这样既能达到lz的要求,还能解决浏览器兼容性问题。
      

  3.   

    jquery里面有个队列的方法,使用时很简单:
    $("yourclass").quene("fx",[fn1,fn2,fn3...])//执行时就会按照数组中的顺序,若想指定函数执行顺序,只要修改函数数组即可