2014-06-17 13 views
5

I grafici alti hanno un evento doppio clic come?Highcharts - Evento doppio clic

plotOptions: { 
     series: { 
      cursor: 'pointer', 
      marker: { 
       radius: 2 
      }, 
      point: { 
       events: { 
        // like this any event?If not, any alternative 
        dbclick: function() { 
         $('.highcharts-tooltip').show(); 
        }, 
        click: function() { 
         $('.highcharts-tooltip').show(); 
        }, 
        mouseOver: function() { 
         $('.highcharts-tooltip').hide(); 
        }, 
        mouseOut: function() { 
         $('.highcharts-tooltip').hide(); 
        } 
       } 
      } 
     } 
} 

Quello che voglio ottenere è, voglio mostrare punta dell'utensile sul doppio clic sul punto.

+1

possibile duplicato di [Come rilevare il doppio clic o i clic lunghi sui punti in H grafici a ighchart?] (http://stackoverflow.com/questions/18403261/how-to-detect-double-clicks-or-long-clicks-on-points-in-highcharts-charts) –

risposta

1

Ho provato ad utilizzare l'estensione, ma non ha funzionato, così ho deciso di scrivere un piccolo doppio evento click (sulla base di evento click).

Lo svantaggio è che è incapsulato all'interno dell'evento "clic", ma non è un grosso problema poiché chiama una funzione separata.

In primo luogo, definire le impostazioni:

 var doubleClicker = { 
      clickedOnce : false, 
      timer : null, 
      timeBetweenClicks : 400 
     }; 

quindi definire una funzione di 'doppio click Reset' nel caso in cui il doppio click non è abbastanza veloce e un doppio click callback:

 // call to reset double click timer 
     var resetDoubleClick = function() { 
      clearTimeout(doubleClicker.timer); 
      doubleClicker.timer = null; 
      doubleClicker.clickedOnce = false; 
     }; 

     // the actual callback for a double-click event 
     var ondbclick = function(e, point) { 
      if (point && point.x) { 
       // Do something with point data 
      } 
     }; 

e nel highcharts impostazioni del grafico:

series: [{ 
    point: { 
    events: { 

     click: function(e) { 
     if (doubleClicker.clickedOnce === true && doubleClicker.timer) { 
      resetDoubleClick(); 
      ondbclick(e, this); 
     } else { 
      doubleClicker.clickedOnce = true; 
      doubleClicker.timer = setTimeout(function(){ 
      resetDoubleClick(); 
      }, doubleClicker.timeBetweenClicks); 
     } 
     } 

    } 
    } 
}]