将侦听器添加到构造函数中的Jquery对象中

问题描述 投票:0回答:1

我有以下代码:

<body>
    <canvas id="canvas" height="300" width="300" style="border:1px solid" />
</body> 

<script>
    function maze(canvas){
       this.ctx = canvas[0].getContext("2d");
       canvas.mousedown(down);   
    }

    function down(e){
      alert(this.ctx);   
    }    
$(document).ready(function(e){   
   var m = new maze($('#canvas'))   
}); 
</script>

但是在down函数中this.ctx是未定义的,有什么想法吗? (是的,我正在导入jQuery 1.6.2)

jquery html canvas jquery-events mousedown
1个回答
1
投票

这里canvas指向一个jquery对象,this指向迷宫实例。所以试试这个

function maze(canvas){
       canvas.data("ctx", canvas[0].getContext("2d"));
       canvas.mousedown(down);   
    }

    function down(e){
      alert($(this).data("ctx"));   
    }    
$(document).ready(function(e){   
   var m = new maze($('#canvas'))   
}); 
© www.soinside.com 2019 - 2024. All rights reserved.