向 on("click") 函数添加参数 [重复]

Posted

技术标签:

【中文标题】向 on("click") 函数添加参数 [重复]【英文标题】:Add parameters to on("click") function [duplicate] 【发布时间】: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);); 【参考方案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 来附加事件侦听器,就像许多其他库一样。

以上是关于向 on("click") 函数添加参数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

事件绑定方法和性能 $(document).on("click", "#id", fn) VS $("#id").on("clic

.on("click") 在 iOS 上不起作用

jQuery的("#Id").click(function(){})和("#Id").on("click",function(){})的区别

vue教程1-04 事件 v-on:click="函数"

jquery bind event, use on. $(document).on("click","#a",function(){alert}) [#d(代码

Click on 与click有区别吗?