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的鼠标事件
使用鼠标事件或触摸事件的在线示例似乎都不起作用
我已经阅读了这些问题报告
因此,对我来说,即使在我的计算机上也不起作用……您通常不希望像这样混合使用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个触摸点的触摸输入。这可能是问题所在吗?我读过&