如何使用jquery选择数组中的内容

How to select content inside an array with jquery?

本文关键字:数组 何使用 jquery 选择      更新时间:2023-09-26

我制作了一个带有标记和弹出窗口的leafpad openstreetmap。我现在想改变一个图片显示在另一个<div id="plot">在该网站取决于哪个标记点击。为了更新div,我想到了使用jquery。我的问题是现在得到数组的内容(图像url),当我点击一个标记…我很感激你的帮助。

function add_marker() {
    var points = [
        ["P1", 51.57186, 11.8517, '<img src="img/1.JPG" alt="" width="350px">'],
        ["P2", 51.57886, 11.8117, '<img src="img/2.JPG" alt="" width="350px">'],
        ["P3", 51.57586, 11.8017, '<img src="img/3.JPG" alt="" width="350px">']
    ];
    var marker = [];
    for (var i = 0; i < points.length; i++) {
        marker[i] = new L.Marker([points[i][1], points[i][2]])
        marker[i].addTo(map);
        marker[i].bindPopup(points[i][0]);
        marker[i].on('click',  onClick);
    }
    function onClick(e) {
        $('#plot').html(points[i][3]);
    };
}

您需要将对pointsi的引用作为onClick函数的参数传递,因为它们不在全局命名空间中。

function add_marker() {
    var points = [
        ["P1", 51.57186, 11.8517, '<img src="img/1.JPG" alt="" width="350px">'],
        ["P2", 51.57886, 11.8117, '<img src="img/2.JPG" alt="" width="350px">'],
        ["P3", 51.57586, 11.8017, '<img src="img/3.JPG" alt="" width="350px">']
    ];
    var marker = [];
    var i;
    for (i = 0; i < points.length; i++) {
        marker[i] = new L.Marker([points[i][1], points[i][2]])
        marker[i].addTo(map);
        marker[i].bindPopup(points[i][0]);
        marker[i].on('click', function(e){
          onClick(e, points, i);
        });
    };
};
function onClick(e, points, i) {
    $('#plot').html(points[i][3]);
};
function add_marker() {
    var points = [
        ["P1", 51.57186, 11.8517, '<img src="img/1.JPG" alt="" width="350px">'],
        ["P2", 51.57886, 11.8117, '<img src="img/2.JPG" alt="" width="350px">'],
        ["P3", 51.57586, 11.8017, '<img src="img/3.JPG" alt="" width="350px">']
    ];
    var marker = [];
    var i;
    for (i = 0; i < points.length; i++) {
        marker[i] = new L.Marker([points[i][1], points[i][2]])
        marker[i].addTo(map);
        marker[i].bindPopup(points[i][0]);
        // using a closure to avoid incorrect reference
        (function (i) {
            marker[i].on('click', function(e){
                onClick(e, points, i);
            });
        })(i)
    };
};
function onClick(e, points, i) {
    $('#plot').html(points[i][3]);
};

https://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/解释为什么使用闭包