Это плохо документировано, но вы можете найти обсуждение этого вопроса здесь .
По сути, вам нужно создать обработчики событий для вашего графика до того, как вызовет jqplot для создания реального графика. Для этого вам нужно сделать что-то вроде этого:
var handler = function(ev, gridpos, datapos, neighbor, plot) {
if (neighbor) {
alert('x:' + neighbor.data[0] + ' y:' + neighbor.data[1]);
}
};
$.jqplot.eventListenerHooks.push(['jqplotClick', handler]);
Это простой обработчик событий, который проверяет, есть ли соседняя точка данных рядом с тем местом, где вы щелкнули. Смотрите рабочий пример здесь: http://jsfiddle.net/andrewwhitaker/PtyFG/
Обновление: Если вы хотите прослушивать только события на определенном графике, вы можете сделать что-то вроде этого:
var handler = function(ev, gridpos, datapos, neighbor, plot) {
if (plot.targetId === "#chartdiv") {
if (neighbor) {
alert('x:' + neighbor.data[0] + ' y:' + neighbor.data[1]);
}
}
else if (plot.targetId === "#chart2div") {
....
}
// etc...
};
Где бы вы заменили #chartdiv
на любой идентификатор таблицы, для которой вы хотите прослушивать события. Пример был обновлен.
Обновление 2: Похоже, вы можете использовать обычное bind
событие с сюжетными событиями:
$("#chartdiv").bind("jqplotClick", function(ev, gridpos, datapos, neighbor) {
if (neighbor) {
alert('x:' + neighbor.data[0] + ' y:' + neighbor.data[1]);
}
});
Пример использования этого метода с двумя диаграммами:
http://jsfiddle.net/andrewwhitaker/PtyFG/5/
Надеюсь, это поможет!