Javascript 添加ID';拉斐尔之物

Javascript 添加ID';拉斐尔之物,javascript,jquery,raphael,Javascript,Jquery,Raphael,我有一个相当大的地图,由Raphael路径组成,我试图让一些要填充的jQueryAjax脚本能够访问这些路径。我尝试添加一个ID或任何东西,以使其能够以有组织的方式从jquery访问 由于我是拉斐尔的新手,我想不出一个好办法来达到这个目的。 我曾尝试使用.data()为每个点添加一个ID,例如“seat_1”、“seat_2”等等,但到目前为止都没有成功 我如何组织这些代码,以便通过循环操作它? 我意识到这是一个相当开放的问题,但任何建议都非常感谢 此处演示: 产生 <path style

我有一个相当大的地图,由Raphael路径组成,我试图让一些要填充的jQueryAjax脚本能够访问这些路径。我尝试添加一个ID或任何东西,以使其能够以有组织的方式从jquery访问

由于我是拉斐尔的新手,我想不出一个好办法来达到这个目的。 我曾尝试使用.data()为每个点添加一个ID,例如“seat_1”、“seat_2”等等,但到目前为止都没有成功

我如何组织这些代码,以便通过循环操作它? 我意识到这是一个相当开放的问题,但任何建议都非常感谢

此处演示:

产生

<path style="stroke-opacity: 1; " fill="#008000" stroke="#000000" d="M5.834,698.336C2.6169999999999995,698.336,0.0009999999999994458,700.951,0.0009999999999994458,704.167C0.0009999999999994458,707.3820000000001,2.6169999999999995,710,5.834,710C9.052999999999999,710,11.669,707.382,11.669,704.167C11.669,700.951,9.053,698.336,5.834,698.336" stroke-width="0" stroke-opacity="1"></path>

您可以将它们推送到一个数组中:

var pathArray = new Array();
var path_gs = rsr.path("path coords");
pathArray.push(path_gs); 
然后循环遍历pathArray


另一个选择是将它们分组

嗯,我的做法如下。首先,我写入对象中的所有路径,例如:

var paths = {
    path1: 'the paths coordinates',
    path2: 'the paths coordinates',
    path3: 'the paths coordinates',
}
然后,您只需在所有路径中循环,设置每条路径的坐标并给它们一个ID(这是拉斐尔的内部ID):

现在,如果您想获得其中一个元素,可以使用下一个Raphael功能:

var thisPath = paper.getById('path1');
通过这种方式,您可以在任何Raphael方法上使用路径。因此,如果需要获取圆顶中的节点,可以执行以下操作:

var node = thisPath.node
但是如果需要为路径设置动画,最好使用Raphael的动画方法,或者如果需要更改attibutes,则使用attr方法

thisPath.animate(.....)
如果需要对所有路径应用某些更改,可以使用:

paper.forEach(function(thisArg))
您需要传递在每个元素上运行的函数,并且thisArg在每次迭代中引用该元素

也许你想看看拉斐尔的集合,它对于在元素组上使用方法很有用。如果您需要使用此功能的任何帮助,请告诉我,我会尽力帮助您。再见

thisPath.animate(.....)
paper.forEach(function(thisArg))