javascript - 解除绑定(bind)不起作用

标签 javascript jquery html openlayers openlayers-3

为什么我无法在 openlayers 3 中取消绑定(bind)事件? 我正在尝试以交互方式绘制圆圈。 对于解除绑定(bind)事件,我使用 map.un('click',function(){ ... });

M.on('click',function(e){
      if(!$pec.hasClass('active')) { deactive(true); return false;}
            if( !isDrawing ){
                isDrawing = true;
                var center = e.coordinate;
                var circle = new ol.geom.Circle([center[0],center[1]],10000,'XY');
                var feature = new ol.Feature(circle);
                var vectorSource = new ol.source.Vector();
                vectorSource.addFeature(feature);
                c = new ol.layer.Vector({
                    source: vectorSource
                });
                c.circle=circle;
                M.addLayer(c);
                $('body').css('cursor','crosshair');
            }
            else {
                isDrawing = false;
                deactive(false);
                $('body').css('cursor','default');
                finishDraw('circle',c);
            }
        });
        M.on('pointermove',function(e){
            if(isDrawing){
                c.circle.setRadius(distanceTo(c.circle.getCenter(),e.coordinate)); 
            }
        }); 
        function deactive(all){
            M.un('click',function(){ log('deactive click');});
            M.un('pointermove',function(){});
            if(c && all) M.removeLayer(c);
            isDrawing = false;
        }

如何解决? 我有更多这样的解除绑定(bind),但都不起作用 -.-

最佳答案

我认为这里发生的是您绑定(bind)事件的方法是匿名的。当你想解绑一个事件时,必须发送相同的方法作为引用。

尝试将您的函数声明为一个变量,然后在您的绑定(bind)和解除绑定(bind)操作中使用它。像这样的东西:

var myFunc = function(e) {};
M.on('click', myFunc);
M.un('click', myFunc)

此外,函数本身在无界时不会被调用。这就是您的日志记录不起作用的原因。

关于javascript - 解除绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29117867/

相关文章:

javascript - 在 jQuery 中添加表格行

javascript - 在 ionic 中只选中一个复选框

javascript - 具有行详细信息的自适应网格

悬停时无序列表中的 HTML 链接不会改变颜色

javascript - 使用子级别构建 JSON

javascript - 在距页面顶部的偏移量/ anchor /可变 px 高度处显示/隐藏 div - 让 jQuery 读出 'offset/anchor' 位置

javascript - Bootstrap 警报自动关闭不起作用

ajax - jQuery .append(html) 命令附加错误

python - 当我按 CSS 类过滤时,为什么 scrapy 和 beautifulsoup 都没有返回任何内容?

javascript - 在 `Focusout` true 上的表 td 上使用 `contenteditable = "