如何在一个标记上编辑事件?

时间:2016-10-21 10:11:07

标签: javascript events leaflet

我有一个标记,我在其上添加了一个事件:

myMarker.on('dragend', function(event) {
            myFunctionEvent});

我需要编辑功能事件:

myMarker.on('dragend', function(event) {
            newFunctionEvent});

如果我喜欢上述内容,则会添加一个新事件,两者都会触发。 必须先删除。

我不想删除标记并为此创建新标记。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

只需删除上一个事件处理程序。

function myEvHandler(ev) {...}
myMarker.on('dragend', myEvHandler);

// Later...
myMarker.off('dragend', myEvHandler);
function myNewEvHandler(ev) {...}
myMarker.on('dragend', myNewEvHandler);

为了做到这一点,请确保可以引用您的事件处理函数(换句话说:不要创建匿名的lambda样式函数)。

答案 1 :(得分:0)

要在传单0.7.7中添加或删除现有事件,您可以这样做

L.Draggable.include({
  _onUp: function () {
    L.DomUtil.removeClass(document.body, 'leaflet-dragging');

    if (this._lastTarget) {
      L.DomUtil.removeClass(this._lastTarget, 'leaflet-drag-target');
      this._lastTarget = null;
    }

    for (var i in L.Draggable.MOVE) {
      L.DomEvent
          .off(document, L.Draggable.MOVE[i], this._onMove)
          .off(document, L.Draggable.END[i], this._onUp);
    }

    L.DomUtil.enableImageDrag();
    L.DomUtil.enableTextSelection();

    if (this._moved && this._moving) {
      // ensure drag is not fired after dragend
      L.Util.cancelAnimFrame(this._animRequest);

      this.fire('dragend', {
        distance: this._newPos.distanceTo(this._startPos)
      });

      //Put your event here
    }

    this._moving = false;
  }
});