事件委托是一个很好解决一个页面出现很多同类监听器的方法,但是我在使用blur事件的时候,我把blur事件注册在form元素上然后通过判断event.target来分情况处理,但是不起作用无奈只能通过循环在每个input元素上注册blur事件这是为什么呢难道不是所有的元素都支持所有事件?

解决方案 »

  1.   

    document.forms[0].addEventListener('blur',handler,false);
    function handler(e){
    switch(e.target.name){
    case 'name':alert('name input element');
    break;
    case 'age':alert('age input element');
    break;
    default:alert('not found');
    }
    }


    document.forms[0].addEventListener('click',clickHandler,false);
    function clickHandler(e){
    switch(e.target.name){
    case 'name':alert('name input element');
    break;
    case 'age':alert('age input element');
    break;
    default:alert('not found');
    }
    }
      

  2.   

    blur事件和click事件处理完全相同,但是blur事件就是没用
      

  3.   

    javascript有委托这种说法吗?
    如果硬要说有, 那函数可以当成是委托
      

  4.   

    javascript 有delegate这种说法,问题的关键是blur 不会冒泡,不会向上传播。所以会出现你这样的问题,考虑用focusOut,但得扩展使其兼容。