2017-07-25 45 views
0

我有一個類選擇器,點擊綁定。當我單擊多次時,會出現問題,它會在第一次回調函數兩次,在下次單擊時回調函數三次等等。Jquery類選擇器點擊重複函數

var point = data.points[0].x; 
    var counter = 0;   
    $(".menuOption").click(function() { 
     console.log(counter); 
     counter++;  
     var code = $(this).attr('id'); 
     var text = $(this).html(); 
     var newLine = { 
      type: 'line', 
      x0: point, 
      x1: point, 
      y0: 0, 
      y1: 1, 
      yref: 'paper', 
      line: { 
       color: 'black', 
       width: 1 
      }, 
      name: text 
     }; 
     var annotation = { 
      x: point, 
      y: data.points[0].y, 
      xref: 'x', 
      yref: 'y', 
      text: code, 
      textangle: 90, 
      showarrow: true, 
      arrowhead: 7 
     } 
     Plotly.relayout("grap", { 
      'shapes[0]': newLine, 
      'hovermode': 'closest', 
      'annotations[0]': annotation 
     }); 

    });  

我在下面的筆中添加了一些console.log。

CodePen

+0

之前的地方解除綁定,$(「。menuOption」)。unbind(); – Grumpy

+0

它工作了一點...它仍然重複該功能。我正在使用一個處理程序,也許它有一些差異。其實我不知道。 – dmance

回答

1

線76,你建立一個點擊監聽器:

myPlot.on('plotly_click', function (data) { ... } 

內部的處理程序(線106),你在菜單選項設定另一個點擊監聽器:

$(".menuOption").click(function() { ... } 

因此,每次發生plotly_click事件時,都會添加另一個點擊偵聽器。您應該將事件處理程序之外的menuOption click偵聽器綁定,或者在設置新偵聽器之前解除綁定。

+0

噢,謝謝。這是有道理的,我做了一個如果內部並解決了問題,但它不是正確的解決方案。 – dmance