我从那以后一直在做传单API。我一直被困在函数调用中,这给了我意想不到的行为。代码如下
var it=0;
var map = L.map('map1', {
center:[51.505,-0.09],
zoom: 2,
});
L.tileLayer('http://{s}.tile.cloudmade.com/c77b2fb7bfb74f74998061abda20d58f/997/256/{z}/{x}/{y}.png',{
attribution: '2013 © @ Rajat/Akshat',
maxZoom: 18
}).addTo(map);
var marker = L.marker([51.5,-0.09], {draggable: true, opacity: 0.8}).addTo(map);
function onDragEnd(e) {
var lat_marker = e.target._latlng.lat;
var lng_marker = e.target._latlng.lng;
}
var i=6;
marker.on('dragend',onDragEnd(event));
已在HTML网页上创建了map1 div
ID。
现在问题是这个功能:
marker.on('dragend',onDragEnd(event));
显示此错误
ReferenceError:未定义事件
marker.on( 'dragend',onDragEnd(事件));
但是当我在没有任何参数marker.on('dragend',onDragEnd());
的情况下传递它时,它就可以了。
另外,我想在函数中添加自己的参数:
marker.on('dragend',onDragEnd(i));
i
是一个简单的变量。但是这个函数出了问题,它没有按预期工作。
答案 0 :(得分:5)
onDragEnd(event)
执行该功能。您只需要传入函数引用
marker.on('dragend',onDragEnd);
在函数立即执行函数后使用()。您希望此方法在拖动结束时充当回调。
当调用此方法时,事件对象以默认方式传递。所以你不必担心将它作为参数传递
function onDragEnd(event) {
要传递自定义参数,您可以尝试使用这些行。
for(var i=0; i < $('span').length ; i++) {
$('span').eq(i).on('click', bindClick(i));
}
function bindClick(index) {
return function(e) {
dragEnd(e, index);
}
}
function dragEnd(e, index) {
console.log(e);
console.log(index);
}
<强>代码强>
for (var i = 0; i < $('.marker').length; i++) {
var marker = $('.marker').eq(i);
$('span').eq(i).on('dragend', bindDragEnd(i));
}
function bindDragEnd(index) {
return function (e) {
dragEnd(e, index);
}
}
function dragEnd(e, index) {
console.log(e);
// you can access the marker object
//by accessing it like $('.marker').eq(index)
}
<强> Check Fiddle 强>