我有一个标记,我在其上添加了一个事件:
myMarker.on('dragend', function(event) {
myFunctionEvent});
我需要编辑功能事件:
myMarker.on('dragend', function(event) {
newFunctionEvent});
如果我喜欢上述内容,则会添加一个新事件,两者都会触发。 必须先删除。
我不想删除标记并为此创建新标记。
我该怎么做?
答案 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;
}
});