【问题标题】:Add parameters to on("click") function [duplicate]向 on("click") 函数添加参数 [重复]
【发布时间】:2016-03-26 10:30:28
【问题描述】:

我在地图上做了一些标记

L.marker([42.76, 20.52], 5, {color: "blue"}).addTo(map).bindPopup("<b>Name: </b> My name<br /><b>Adress:</b> My adress<br /> <b>Description:</b>My description...").on("click", circleClick);

我的circleClick函数如下:

function circleClick(e) {
app.getInfo(e.latlng.lat, e.latlng.lng);;}

我使用这个函数将坐标从JavaScript 发送到Java。但现在我想在我的circleClick 函数中添加一些参数。这不是问题,我知道该怎么做。但我不知道如何调用带参数的函数。我试过了:

L.marker([42.76, 20.52],[...]).on("click", circleClick(e, parameter1, parameter2));

但它不起作用。请帮帮我,如何在.on("click", circleClick(...));指定参数?

【问题讨论】:

  • .on("click", function(e){circleClick(e, parameter1, parameter2);});

标签: javascript leaflet


【解决方案1】:

如果您不介意参数的顺序,您可以bind 它添加参数:

.on("click", circleClick.bind(null, parameter1, parameter2));

它将创建带有前置parameter1parameter2 的函数,以便像circleClick(parameter1, parameter2, e) 一样调用回调

【讨论】:

    【解决方案2】:
    L.marker([42.76, 20.52],[...]).on("click", function(e) {
      circleClick(e, parameter1, parameter2);
    });
    

    来自 jquery 文档: The handler argument is a function (or the value false, see below), and is required unless you pass an object for the events argument. 你正在做的是调用 on() 方法中的函数而不是指定处理程序。

    【讨论】:

    • 我补充说。但我的功能仍然不起作用:function circleClick(e, name, adress) { app.getInfo(e.latlng.lat, e.latlng.lng, name, adress); }
    • fiddle。如果您仍然遇到问题,那么代码可能还有其他问题。尝试放置日志。
    • 作为记录,请注意 Leaflet 不是基于 jQuery,尽管它遵循类似的 API 来附加事件侦听器,就像许多其他库一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 2016-12-27
    • 2021-11-04
    相关资源
    最近更新 更多