解决方案 »

  1.   

    function removeEvent(node,type,listener) {
    if(!(node = $(node))){return false;}
    if(node.removeEventListener)
    {
    //W3C方法
    node.removeEventListener(type,listener,false);
    return false;
    }
    else if(node.detachEvent)
    {
    //MISE方法
    node.detachEvent('on'+type,node[type+listener]);
    node[type+listener] = null;
    return true;
    }
    return false;
    };对应着写,有一点要注意,匿名函数,是没有办法解除绑定的,就像你代码中,IE下会绑定那个匿名函数,任何方法都不可能删除这个监听函数的。
      

  2.   

    想办法保存函数引用就可以了,可以用map来保存
      

  3.   

    Quote: 引用 1 楼 zyl_lyr1019 的回复:

    function removeEvent(node,type,listener) {
    if(!(node = $(node))){return false;}
    if(node.removeEventListener)
    {
    //W3C方法
    node.removeEventListener(type,listener,false);
    return false;
    }
    else if(node.detachEvent)
    {
    //MISE方法
    node.detachEvent('on'+type,node[type+listener]);
    node[type+listener] = null;
    return true;
    }
    return false;
    };node.detachEvent('on'+type,node[type+listener]);这一步骤不懂,detachEvent方法的第二个参数不是传递一个函数进去的吗???如果是传递node[type+listener],detachEvent方法就不能识别???而且这个条件句if(!(node = $(node))){return false;}怎么会出现一个$符号。这个语句有何作用??