【问题标题】:Jquery class selector click repeat functionjquery类选择器点击重复功能
【发布时间】:2017-07-25 10:33:55
【问题描述】:

我有一个带有点击绑定的类选择器。当我点击不止一次时会出现问题,它在第一次调用时调用了两次,在下一次点击时调用了三次,依此类推。

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

【问题讨论】:

  • 把 unbind 放在前面,$(".menuOption").unbind();
  • 它工作了一点......它仍然重复该功能。我正在使用情节处理程序,也许它有一些差异。其实我不知道。

标签: javascript jquery class selector


【解决方案1】:

在第 76 行,您正在设置一个点击监听器:

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

在该处理程序中(第 106 行),您正在菜单选项上设置另一个点击侦听器:

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

所以每次plotly_click 事件发生时,您都会添加另一个点击监听器。您可能应该将 menuOption 单击侦听器的绑定移到事件处理程序之外,或者您应该在设置新的侦听器之前取消绑定。

【讨论】:

  • 哦,谢谢。这是有道理的,我在里面做了一个 if 并解决了问题,但这不是正确的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
  • 2019-02-27
  • 2019-08-05
  • 1970-01-01
相关资源
最近更新 更多