将事件侦听器添加到javascript对象

时间:2016-02-29 20:08:57

标签: javascript javascript-events

我从数据库中获取了一系列javascript对象。我循环遍历该数组并创建要在屏幕上显示的对象。我试图对每个对象使用.addEventListener(),但我才意识到.addEventListener()仅适用于DOM对象。

我怎样才能为每个javascript对象添加一个事件监听器?谢谢!

修改

根据要求,这是我的代码:

    var objects = JSON.parse(data.responseText);
    var i;
    var objectLn = objects.length;

    for (i = 0; i < objectLn; i++) {

        //Puts each object into a variable
        var eachObject = objects[i];

        //Establishes pin position
        var pinPos = {
            lat: parseFloat(eachObject.lat),
            lng: parseFloat(eachObject.lng)
        };

        //Creates new icon for pin
        var icon = {
            url: "path/to/img",
            scaledSize: new google.maps.Size(60, 60),
            origin: null,
            anchor: null
        };

        //Creates a new pin from pulled information
        var pin = new google.maps.Marker({
            position: pinPos,
            map: map,
            icon: icon
        });

        //Alerts each object on click
        pin.addListener('click', function() {
            alert(JSON.stringify(eachObject));
            map.panTo(pinPos);
            map.setCenter(pinPos);
        });
    }

addListner正在添加一个&#39;点击&#39;监听每个掉落的引脚,这样做很好。问题是它应该警告每个对象,但它只警告我在每个点击的数据库中从数据库中检索的最后一个对象。

1 个答案:

答案 0 :(得分:1)

尝试像这样做你的循环..

for (i = 0; i < objectLn; i++) {
    (function(eachObject){
        // copy the loop contents here. eachObject is already defined.
    })(objects[i]);
}