当我进入点击事件时,我想在单个Raphael元素上运行该功能,例如圆圈。如何定位单个元素而不是页面上的所有圈子?
JQuery选择器 - $(this).animate({ opacity: 0.2}, 2000);
我需要知道$(this)
的等价物。或者,如果有其他方式选择该元素?
答案 0 :(得分:4)
如果您使用Raphael本身附加事件,this
是Raphael包裹的元素(即this
默认等效于$(选择器))。
例如
paper.rect(50, 50, 50, 50)
.attr('fill', '#000')
.click(function () {
// `this` is the rect Raphael object
this.attr('fill', '#ff0000'); // turn the clicked rect red
});
要实现jQuery样式的包装器,需要一个弱映射实现,这些实际上会泄漏。最好使用Raphael api将事件附加到SVG元素,而不是直接将事件附加到节点。
答案 1 :(得分:1)
this
只是在jQuery的情况下引用DOM元素,并且可以有许多上下文。如果你在像var instance = new Raphael(canvasEl, 100, 100 )
之类的画布元素上创建一个新的Raphael实例,并且你想要在稍后引用它,你必须将它缓存在一个变量中并在整个代码中使用它。 / p>
如果您要使用Raphael创建路径并想要存储它们,请将它们分配给var square = raphaelCanvas.rect(20,20,20,20)
等变量。