将事件从对象委托给另一个对象

时间:2012-12-21 14:58:48

标签: javascript jquery javascript-events

我想将一个事件从一个元素委托给另一个元素。我有这个简单的测试代码,我得到一个例外:第{12行的Error: UNSPECIFIED_EVENT_TYPE_ERR: DOM Events Exception 0(发送)。我已阅读this,但之前的注释行没有任何区别。我怎样才能做到这一点?

代码:

<!DOCTYPE html>
<html>
  <head>
    <script src="jquery.js"></script>
    <script>
    function init(){}

    function delegator(e){
        alert('the first');
        var other = document.getElementById('myCanvas2');
        //e.trigger = other;
        other.dispatchEvent(e);
    }

    $("#myCanvas").live('dblclick', delegator);
    $("#myCanvas2").live('dblclick', function(){alert('the second');});
    </script>
  </head>
  <body>
    <canvas id="myCanvas" style="width:1200px; height:600px; border: solid black 1px;"></canvas>
    <canvas id="myCanvas2" style="width:1200px; height:600px; border: solid black 1px;"></canvas>
  </body>
</html>
  • 对我来说,重要的是所有信息都会转到委托对象,因为它会被各种其他对象所取代,例如谷歌地图画布或任何其他服务。

1 个答案:

答案 0 :(得分:4)

  1. .live前一段时间是deprecated

  2. 由于 使用jQuery,请使用.trigger(...)

    function delegator(e){
        alert('the first');
        $('#myCanvas2').trigger(e);
    }
    
    $("#myCanvas").on('dblclick', delegator);
    $("#myCanvas2").on('dblclick', function(){alert('the second');});
    

    演示:http://jsfiddle.net/maniator/zbJBd/