link.attr(attrs)
Set SVG attributes on subelements. This is a method analogous to attr method of Joint.dia.Element. The keys of the attrs object are CSS selectors matching the SVG element the link consists of. The values are objects containing SVG attributes and their values. attrs object will be mixined with attrs property of the link model. This is a convenient way of rewriting only some of the attributes of the SVG elements. For overwritting all attributes of all SVG elements, use link.set('attrs', attrs). Here it is important to mention how the markup of a link looks like:
<path class="connection"/>
<path class="marker-source"/>
<path class="marker-target"/>
<path class="connection-wrap"/>
<g class="labels" />
<g class="marker-vertices"/>
<g class="marker-arrowheads"/>
<g class="link-tools" />
As you can see, the link consists of a couple of SVG path elements and couple of SVG group elements:
.connection is the actual line of the link..connection-wrap is an SVG path element that covers the .connection element and is usually thicker so that the link is able to
handle pointer events (mousedown, mousemove, mouseup) that didn't target the thin .connection path exactly. This makes it easy
to "grab" the link even though the mouse cursor didn't point exactly at the (usually thin) .connection path element..marker-source and .marker-target are the arrowheads of the link.link.attr({
'.connection': { stroke: 'blue' },
'.marker-source': { fill: 'red', d: 'M 10 0 L 0 5 L 10 10 z' },
'.marker-target': { fill: 'yellow', d: 'M 10 0 L 0 5 L 10 10 z' }
});
An alternative call using a string path and a value:
link.attr('.marker-source/fill', 'green');