Javascript Raphaeljs:如何使用event.target返回元素引用?

Javascript Raphaeljs:如何使用event.target返回元素引用?,javascript,jquery,reference,raphael,Javascript,Jquery,Reference,Raphael,目前我有一个绘制形状的小应用程序 下面是一个例子,包括我的问题: 我得到错误:uncaughttypeerror:Object[Object Object]没有方法“getBBox” 下面是错误的来源代码 当用户单击形状时,我捕获event.target var onMouseDown = function(event) { setBBoxes($(event.target)); // Seems OK }; 我想把BBox拿回来,但我的形状已经丢失了BBox var setBBoxe

目前我有一个绘制形状的小应用程序

下面是一个例子,包括我的问题:

我得到错误:
uncaughttypeerror:Object[Object Object]没有方法“getBBox”

下面是错误的来源代码

当用户单击形状时,我捕获event.target

var onMouseDown = function(event) {
    setBBoxes($(event.target)); // Seems OK
};
我想把BBox拿回来,但我的形状已经丢失了BBox

var setBBoxes = function(shape) {
    shape.getBBox(); // Unable.. getBBox is part of Raphael shapes, but mine is not the real reference?
};
举个简单的例子:

编辑 我的问题是把jQuery和Raphaeljs弄混了,因为我无法使用Raphael的鼠标事件

使用鼠标事件或触摸事件的在线示例似乎都不起作用

我已经阅读了这些问题报告

此外,Windows认为我有可用于255个触摸点的触摸输入

但我再也没有触摸屏了(有一个触摸屏,但换了屏幕,删除了驱动程序)


因此,对我来说,即使在我的计算机上也不起作用……

您通常不希望像这样混合使用jQuery和Raphael,因为很容易混淆您使用的是哪个库的事件处理程序和方法。当您开始直接处理Raphael创建的DOM元素时,也会失去Raphael对旧浏览器的回退功能

在这种情况下,我建议将
.mousedown()
侦听器直接添加到Raphael元素中

var paper = new Raphael($(".testarea")[0], $(".testarea").width(), $(".testarea").height());
var circAttr = {
    "fill": "#4ba6e8",
    "stroke": "#1a81cc",
    "stroke-width": "2"
};

paper.circle(200, 200, 80).attr(circAttr).mousedown(function() {
    someFunction(this);
});


var someFunction = function(shape) {
    console.log(shape.getBBox());    
};
更新小提琴:


当然,您将无法使用选择器一次选择所有形状,并将事件一次添加到所有形状。在创建mousedown事件时,需要将其添加到每个事件中。我想这是一个小小的折衷。

我终于找到了修复我的bug的方法

似乎拉斐尔认为我有一个触摸屏

“Tablet PC组件”Windows功能已打开。禁用此功能后,我可以再次使用鼠标和触摸事件


是的,你是对的,但是拉斐尔的mousedown、mousemove、mouseup、drag以及触摸手势(touchstart、touchmove、touchend等)都被破坏了!所以这些手势事件必须使用jQuery触发。。。使用谷歌Chrome 27和FireFox 22还会再来吗?这是记录在案的错误吗?在文档中找不到。但对我来说,即使这样也不行:@Bondye your fiddle()在我的Chrome版本27.0.1453.116上运行良好。甚至我也建议不要混合使用jQuery和Raphael事件。主要原因是这两个库管理事件的方式大不相同。嗯,问题出在其他地方。。顺便说一句,我的windows认为他有255个触摸点的触摸输入。这可能是问题所在吗?我读过&