0

当我在点击事件中时,我想在单个 Raphael 元素(例如圆圈)上运行该函数。如何定位该单个元素而不是页面上的所有圆圈?

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

我需要知道等价物$(this)是什么。或者是否有另一种选择该元素的方法?

4

2 回答 2

4

如果您使用 Raphael 本身附加一个事件,那么this是否是 Raphael 包装的元素(即this默认情况下相当于 $(selector))。

例如

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/

于 2012-10-23T10:12:30.857 回答
1

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

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

于 2012-10-23T10:02:24.417 回答