在snap.svg http://snapsvg.io/的事件处理函数(例如,单击回调函数)中,获得属性snap.svghttp://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;
};发布于 2014-01-24 22:47:21
我认为当前版本的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);http://jsfiddle.net/qgTdF/2/这里的小小提琴
这个解决方案可能对您有用,而且更可取,但它最终取决于您是否需要做其他事情(在这种情况下,可能发布另一个问题与特定的问题)。如果您需要稍微修改一下并特别使用id,那么尝试最新版本(我认为0.2)也是值得的。
https://stackoverflow.com/questions/21337329
复制相似问题