Javascript Jquery类选择器单击重复函数

Javascript Jquery类选择器单击重复函数,javascript,jquery,class,selector,Javascript,Jquery,Class,Selector,我有一个带有点击绑定的类选择器。问题发生在我多次单击时,它会在第一次单击时调用函数两次,在下一次单击时调用函数三次,依此类推 var point = data.points[0].x; var counter = 0; $(".menuOption").click(function () { console.log(counter); counter++; var code = $(this).attr(

我有一个带有点击绑定的类选择器。问题发生在我多次单击时,它会在第一次单击时调用函数两次,在下一次单击时调用函数三次,依此类推

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


在第76行,您正在设置一个单击侦听器:

myPlot.on('plotly_click', function (data) { ... }
在该处理程序内(第106行),您正在菜单选项上设置另一个单击侦听器:

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

因此,每次
plotly\u click
事件发生时,您都在添加另一个click侦听器。您可能应该将menuOption click侦听器的绑定移动到事件处理程序之外,或者在设置新的侦听器之前应解除绑定。

将解除绑定放在它前面,如$(“.menuOption”).unbind();它起了点作用。。。它仍然重复该功能。我使用的是一个逐图处理程序,可能有一些不同。其实我不知道。哦,谢谢。这是有道理的,我在里面做了一个if并解决了问题,但这不是正确的解决方案。