向 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));
它将创建带有前置parameter1
、parameter2
的函数,以便像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
jQuery的("#Id").click(function(){})和("#Id").on("click",function(){})的区别
jquery bind event, use on. $(document).on("click","#a",function(){alert}) [#d(代码