未捕获的ReferenceError:未定义e

时间:2012-11-10 21:41:55

标签: jquery

我正在尝试这样做:

$("#canvasDiv").mouseover(function() {
    var pageCoords = "( " + e.pageX + ", " + e.pageY + " )";
    var clientCoords = "( " + e.clientX + ", " + e.clientY + " )";
    $(".filler").text("( e.pageX, e.pageY ) : " + pageCoords);
    $(".filler").text("( e.clientX, e.clientY ) : " + clientCoords);
});

在控制台中我得到了这个:

  

Uncaught ReferenceError: e is not defined

我不明白......我认为e应该是JavaScript已经设置的变量...帮助?

3 个答案:

答案 0 :(得分:12)

更改

$("#canvasDiv").mouseover(function() {

$("#canvasDiv").mouseover(function(e) {

是的,回调的第一个参数是预定义的,但是为了使用它,你必须通过参数名称对它进行别名。这就是为什么我们指定e作为参数。实际上,参数名称不需要e。这也有效:

$('#canvasDiv').mouseover(function( event ) {

});

但是您必须通过函数回调中的名称event为事件对象设置别名。

答案 1 :(得分:2)

您正在定义一个回调函数,该函数将在鼠标悬停事件发生时调用。 框架将有关事件的信息作为此函数的第一个参数传递,并且通常将此参数命名为“e”。但是你必须在函数参数中声明它,即

$('foo').mouseover(function (e) {

答案 2 :(得分:1)

             .....missing e ---- -\/
$("#canvasDiv").mouseover(function(e) {
    var pageCoords = "( " + e.pageX + ", " + e.pageY + " )";
    var clientCoords = "( " + e.clientX + ", " + e.clientY + " )";
    $(".filler").text("( e.pageX, e.pageY ) : " + pageCoords);
    $(".filler").text("( e.clientX, e.clientY ) : " + clientCoords);
});