2012-05-17 3 views
1

Я использую последнюю версию jqPlot (v1.0.0b2_r1012) для построения моих гистограмм.jqPlot - Как поймать событие с двойным щелчком

Чтобы поймать одного события щелчка я использую «jqplotDataClick» следующим образом:

$('#myHistogram').bind('jqplotDataClick', function(ev, seriesIndex, pointIndex, data) { 
    // Do something 
}); 

Можно ли поймать двойное событие щелчка вместо этого?

К сожалению, я не смог найти такое событие в jqplot.barRenderer.js.

Update:

Я сделал следующие два изменений в моем jqplot.barRenderer.js файл:

Регистрация jqplotDblClick события

$.jqplot.BarRenderer.prototype.init = function(options, plot) { 
    ... 
    ... 
    plot.postInitHooks.addOnce(postInit); 
    plot.postDrawHooks.addOnce(postPlotDraw); 
    plot.eventListenerHooks.addOnce('jqplotMouseMove', handleMove); 
    plot.eventListenerHooks.addOnce('jqplotMouseDown', handleMouseDown); 
    plot.eventListenerHooks.addOnce('jqplotMouseUp', handleMouseUp); 
    plot.eventListenerHooks.addOnce('jqplotClick', handleClick); 
    plot.eventListenerHooks.addOnce('jqplotDblClick', handleDblClick); 
    //$.jqplot.eventListenerHooks.push(['jqplotDblClick', handleDblClick]); I've also tried this but without any luck 
    plot.eventListenerHooks.addOnce('jqplotRightClick', handleRightClick); 
}; 

Реализовать функцию handleDblClick

function handleDblClick(ev, gridpos, datapos, neighbor, plot) { 
    if (neighbor) { 
     var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; 
     var evt = jQuery.Event('jqplotDataDblClick'); 
     evt.pageX = ev.pageX; 
     evt.pageY = ev.pageY; 
     plot.target.trigger(evt, ins); 
    } 
} 

А потом я связываю jqplotDataDblClick в моем файле JavaScript следующим образом:

$('#myHistogram').bind('jqplotDataDblClick', function(ev, seriesIndex, pointIndex, data) { 
    alert("Ohayo!"); // Good morning in Japanese 
}); 

Однако двойное событие щелчка doensn't уволят, когда я дважды щелкните на одном из моих вертикальных гистограмм. Я попытался привязать «jqplotRightClick», но это тоже не работает. Если я использую «jqplotClick», тогда все работает так, как ожидалось.

Кто-нибудь знает, что я делаю неправильно здесь?

Update 2:

RE: Я попытался связывание "jqplotRightClick", но это не работает. (Смотри выше)

Я только что узнал, что для того, чтобы поймать этого события вы должны установить следующее:

captureRightClick: true, 

См: How to capture right click event

ответ

1

From the "cursor" plugin, они обрабатывают его, как это :

if (c.dblClickReset) { 
    $.jqplot.eventListenerHooks.push(['jqplotDblClick', handleDblClick]); 
} 

редактирует

Я могу записать двойной щелчок, просто привязывая «jqplotDblClick». Мне не пришлось форсировать мероприятие. Извините за неправильное направление, мой ответ выше означал, что это событие уже существует. См. Рабочий скрипт here. Единственная дополнительная вещь, которую я добавил, - это правила CSS, чтобы сделать div невозможным, поскольку двойной щелчок выберет его.

HTML:

<div id="chart1" style="margin-top:20px; margin-left:20px; width:300px; height:300px; -moz-user-select: -moz-none;-khtml-user-select: none;-webkit-user-select: none;-ms-user-select: none;user-select: none;"></div>​ 

JS:

$(document).ready(function(){ 
     $.jqplot.config.enablePlugins = true; 
     var s1 = [2, 6, 7, 10]; 
     var ticks = ['a', 'b', 'c', 'd']; 

     plot1 = $.jqplot('chart1', [s1], { 

      seriesDefaults:{ 
       renderer:$.jqplot.BarRenderer 
      }, 
      axes: { 
       xaxis: { 
        renderer: $.jqplot.CategoryAxisRenderer, 
        ticks: ticks 
       } 
      } 
     }); 

     $('#chart1').bind('jqplotDblClick', 
      function (ev, seriesIndex, pointIndex, data) { 
       alert('hi'); 
      }); 
}); 
+0

+1 Хороший один. BTW Как бы вы обслуживали это событие только для одного графика, а не для другого? – Boro

+0

@Mark Спасибо за указатель. Я обновил свой первоначальный пост после еще нескольких исследований. Можете ли вы сказать мне, почему мой двойной клик не срабатывает? Я не понимаю, что я делаю неправильно. – jpen

+0

@jpen см. Правки для ответа. – Mark

Смежные вопросы