0

我已阅读此答案,但仍然对使代码正常工作感到头疼。

我的需求略有不同。我必须绑定每个对象,而不是提醒。我的代码是:

for (var i = 0; i < markers_length; i++) {
    events_number = data.markers[i].events_number //data.markers is a multidimentional array
    marker = L.marker([ data.markers[i].latitude , data.markers[i].longitude ]); //just create the new object
    marker.on('mouseover', function(){
        return function(){
            this.bindPopup(" Found"+events_number+" event(s)").openPopup();
        }
    }(i) );
}

如果你问,我正在使用传单。对于单个对象,bindPopup 的工作方式如下:

marker.on('mouseover', this.bindPopup('hi').openPopup());

麻烦的是上面的代码给出了所有的最后一个对象。我认为this功能的和级别存在问题。那么如何将每个标记与单独的文本绑定?

4

1 回答 1

3

它应该是:

marker.on('mouseover', function(en){
    return function(){
        this.bindPopup(" Found"+en+" event(s)").openPopup();
    }
}(events_number) );

您必须传递要保存在闭包中的值(events_number在这种情况下),并且该函数必须接受一个参数来接收该值并在闭包中使用它(en在我的代码中)。

于 2013-09-08T01:26:28.033 回答