2012-10-04 76 views
1

如何在鼠標懸停的餅圖上調用鼠標單擊事件? 我嘗試了一些東西,但點擊並不像我需要的那麼順利。 下面是代碼示例:Highchart餅圖點擊懸停

plotOptions: { 
     pie: { 
      innerSize: '50%', 
      size: 100, 
      cursor: 'pointer', 
      dataLabels: false 
     }, 
     series: { 
      allowPointSelect: true, 
      type: 'pie', 
      name: 'Coordinates', 
      point: { 
       events: { 
        mouseOver: function (e) { 
         pieChart.tooltip.hide(); 
         var serie = this.series.data[this.x]; 
         var waitBeforeSelect = setTimeout(function() { 
          clearTimeout(waitBeforeSelect); 
          serie.select(); 
          serie.series.show(); 
          pieChart.tooltip.refresh(serie); 
         }, 500); 

         var serieName = serie.name; 
         var textToShow = serieName.substr(0, serieName.indexOf(';')); 
         $('#pieChartInfoText').children().text(textToShow); 
         $('#pieChartInfoText').children().css('color', serie.color); 
        }, 
        mouseOut: function() { 
         pieChart.tooltip.hide(); 
        } 
       } 
      } 
     } 
    }, 

回答

0

謝謝伊戈爾。 是的,它幫助我很多,但它作爲我自己有一些缺點(如果您將鼠標懸停在圖表多次,它會反覆來回,尤其是在甜甜圈圖表上可見),但我已修復它。這裏是代碼片段:

series: { 
      allowPointSelect: true, 
      type: 'pie', 
      name: 'Coordinates', 
      point: { 
       events: { 
        mouseOver: function (e) { 
         var serie = this.series.data[this.x]; 
         if ((undefined == previousSerie) || (serie != previousSerie)) { 
          var point = this; 

          if (!point.selected) { 
           pieChart.tooltip.shared = true; 

           var timeout = setTimeout(function() { 
            clearTimeout(timeout); 
            point.firePointEvent('click'); 

            pieChart.tooltip.shared = false; 
            pieChart.tooltip.refresh(point); 
           }, 700); 
          } 

          var serieName = serie.name; 
          var textToShow = serieName.substr(0, serieName.indexOf(';')); 
          $('#pieChartInfoText').children().text(textToShow); 
          $('#pieChartInfoText').children().css('color', serie.color); 
          previousSerie = serie; 
         } else { 
          previousSerie = serie; 
         } 
        }, 
        mouseOut: function() { 
         // pieChart.tooltip.hide(); 
        } 
       } 
      } 
     } 

再次感謝。

+0

你能像igor那樣在小提琴上展示過嗎?我不能跟着你。 – Rinzler

1

如果你真的想要做的只是選擇mouseOver上的點(我需要做的事情導致我的問題),你可以在你的mouseOver函數中調用this.select(true)。這沒有超時延遲,但仍然可以添加。