什么是Raphael.js相当于JQuerys $(this)选择器?

时间:2012-10-23 09:53:15

标签: javascript raphael css-selectors

当我进入点击事件时,我想在单个Raphael元素上运行该功能,例如圆圈。如何定位单个元素而不是页面上的所有圈子?

JQuery选择器 - $(this).animate({ opacity: 0.2}, 2000);

我需要知道$(this)的等价物。或者,如果有其他方式选择该元素?

2 个答案:

答案 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元素,而不是直接将事件附加到节点。

示例: http://jsfiddle.net/FyM7z/

答案 1 :(得分:1)

this只是在jQuery的情况下引用DOM元素,并且可以有许多上下文。如果你在像var instance = new Raphael(canvasEl, 100, 100 )之类的画布元素上创建一个新的Raphael实例,并且你想要在稍后引用它,你必须将它缓存在一个变量中并在整个代码中使用它。 / p>

如果您要使用Raphael创建路径并想要存储它们,请将它们分配给var square = raphaelCanvas.rect(20,20,20,20)等变量。