获取snap.svg中单击元素的ID

时间:2014-01-24 16:13:15

标签: javascript snap.svg

在事件处理函数(例如点击回调函数)中获取属性id(或基本上任何帮助我识别事件发生的元素的属性)的最佳(跨浏览器)方法是什么? snap.svg http://snapsvg.io/

这是一些代码。我试过的似乎在最新的Chrome和FF中工作,但我想知道是否有更好的方法。

    //add an Element, set id
    var mySvg = Snap('#mySvg');
    var myRect = mySvg.rect(10,10,200,100);
    myRect.attr({id:'myId'});

    //register click callback
    myRect.click(clickCallback);

    //click callback
    var clickCallback = function(event) {
       // how do I get the id of the clicked element?
       // is this cross browser valid?
       var id = event.target.attributes.id.nodeValue;
    };

1 个答案:

答案 0 :(得分:4)

我认为当前版本的Snap和id存在问题,在下一版本中已修复(0.2现在可能是最新版本)https://github.com/adobe-webplatform/Snap.svg/issues/166所以值得一读。

但是,对于这些情况,我通常不使用这样的id,我会使用'this'。所以使用处理程序,它看起来像......

var mySvg = Snap(400, 620);
var myRect = mySvg.rect(10,10,200,100);

var clickCallback = function(event) {
    this.attr({ fill: 'blue' });
};

myRect.click(clickCallback);

jsfiddle here http://jsfiddle.net/qgTdF/2/

此解决方案可能适合您,并且更可取,但最终取决于您是否需要执行其他操作(在这种情况下,可能会针对特定问题发布另一个问题)。它也可能值得尝试最新版本(我认为0.2),如果你需要摆弄一点并专门使用id。