3

我想将一个事件从一个元素委托给另一个元素。我有这个简单的测试代码,我得到一个异常:Error: UNSPECIFIED_EVENT_TYPE_ERR: DOM Events Exception 0在第 12 行(调度)。我已阅读内容,但之前的注释行没有任何区别。我怎样才能使这项工作?

代码:

<!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>
  • 对我来说重要的是所有信息都将发送到委托对象,因为它将被各种其他对象替换,例如谷歌地图画布或任何其他服务。
4

1 回答 1

4
  1. .live不久前被弃用。

  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/

于 2012-12-21T15:04:10.360 回答