如果您使用的是 Raphael 2,您可以使用该data
方法将任意信息与您的元素一起存储——如本例所示。
本质上,当您创建每条路径时,您只需调用
el.data( 'div_id', 'greenthing' );
然后,当单击该元素时,您可以使用从元素中检索指示的 div
el.click( function()
{
var div_id = this.data( 'div_id' );
// Display the div here. Josemando's approach is perfectly cool and will work universally.
} );
如果你想确保一次只显示一个 div,你可以这样做(原始但有效):
el.click( function()
{
rsr.forEach( function( subEl )
{
var divId = subEl.data('div_id' );
if ( divId && document.getElementById( divId ) )
document.getElementById( divId ).style.display = 'none';
} );
} );
当然,还有其他方法可以剥那只猫的皮。
您可能还会发现,如果将所有特定于形状的数据放入结构化对象中,然后在循环中渲染每个路径,您的路径构造代码会更易于管理。我在上面提供的小提琴演示了这种技术,一旦你拥有多个形状,它就会很快得到回报。