I have a joint.js element in a DAG, and would like to be able to trigger an event by clicking on it.
I could use $(selector).click(...)
to do it, but I was
The JointJS shapes are models, so you're right that click handlers won't work on them. The JointJS paper triggers events that might be useful to you:
paper.on('cell:pointerdown',
function(cellView, evt, x, y) {
alert('cell view ' + cellView.model.id + ' was clicked');
}
);
other events are: cell:pointerup, cell:pointerdblclick, cell:pointermove.
The complete list can be found here: http://jointjs.com/api#joint.dia.Paper:events.
EDIT:
Starting from JointJS v0.9, there is also a cell:pointerclick
event.
You can also use Backbone itself to attach specific events to specific models. JointJS is just Backbone under the hood.
const newElement = new jointjs.shapes.devs.Model({....});
graph.addCell(newElement);
newElement
.findView(paper)
.$el.find('.Settings') // this is nested in the model / cell
.click(() => {
// do something
});