Javascript 如何使数组的循环中的.click函数内的链接起作用?

Javascript 如何使数组的循环中的.click函数内的链接起作用?,javascript,jquery,html,Javascript,Jquery,Html,我试图,当tr被点击时,打开一个带有地址的新标签,这是一个GoogleMaps地址,其中包含代码中的变量 我有这个HTML: <tr> <td> <span class="place-address">A Street, 608, City</span> <a class="link-maps"></a> </td> </tr> <tr> <t

我试图,当tr被点击时,打开一个带有地址的新标签,这是一个GoogleMaps地址,其中包含代码中的变量

我有这个HTML:

<tr>
    <td>
    <span class="place-address">A Street, 608, City</span>
    <a class="link-maps"></a>
    </td>
</tr>
<tr>
    <td>
    <span class="place-address">A Street, 998, City</span>
    <a class="link-maps"></a>
    </td>
</tr>
<tr>
    <td>
    <span class="place-address">A Street, 226, City</span>
    <a class="link-maps"></a>
    </td>
</tr>

PS:我知道最后一段代码没有打开新选项卡,但它正在正确重定向。

我不太明白你想做什么。这将记录第一个子项中包含的文本。。。单击时的。从这里开始,您需要构建一个谷歌地图链接和呼叫窗口。打开。。。打开一个新选项卡

作用{ //获取所有标签 document.queryselectoral'tr'.forEachfunction tr{ //侦听每个屏幕上的单击事件 tr.addEventListener“单击”,函数事件{ //将.place地址范围的文本记录在单击的 console.logtr.querySelector'.placeaddress'.innerText; //TODO在此处打开新选项卡窗口。打开。。。 }; }; }; 城市608号A街 城市998号A街 城市226号A街
<>而不是将侦听器分配给每个表行,考虑使用事件委派方法,使用.on .< /p> 作用{ 获取位置; 函数getLocation{ if navigator.geolocation{ navigator.geolocation.GetCurrentPositionHandlerRowClicks,淋浴ROR; }否则{ 警报您的导航器不支持地理定位。; } } 功能淋浴器{ //省略 } 功能手柄箭头单击当前位置{ $places.onclick,tr,function{ 谷歌地图定位; }; } 函数openGoogleMapscurrentPosition{ 让address=$this.find.place-address.text; 让纬度=currentPosition.coords.latitude; 让经度=currentPosition.coords.longitude; 让url=https://www.google.com/maps/dir/ +纬度+,+经度+/+地址+/; console.logurl; //window.openurl; } }; 城市608号A街 城市998号A街 城市226号A街
你怎么称呼openMaps?位置参数从何而来?我编辑了代码,将从中获取位置的函数放入其中。我使用的纬度和经度数据是用户的位置,它只是所有地址的一个。工作非常完美!谢谢
var addressesArray = [];
var linkMapsArray = [];

var placeAddress = $(".place-address").each(function() {

    var addresses = $(this).text();
    addressesArray.push(addresses);
});

var linkMaps = $(".link-maps").each(function() {

    var links = $(this);
    linkMapsArray.push(links);
});

var placesAddresses = addressesArray;

$(function() {

    getLocation();
});

function getLocation() {

    if (navigator.geolocation) {

        navigator.geolocation.getCurrentPosition(openMaps, showError);
    } else {

        alert("Your navigator doesn't support geolocation.");
    }
}

function openMaps(position) {

    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;

    for(j = 0; j < placesAddresses.length; j++) {

        var address = placesAddresses[j];
        linkMapsArray[j].closest("tr").click(function() {

            window.open("https://www.google.com/maps/dir/" + latitude + "," + longitude + "/" + address + "/")
        });
    }
}

//omitted showError function
linkMapsArray[j].text(address);
linkMapsArray[j].attr("href", "https://www.google.com/maps/dir/" + latitude + "," + longitude + "/" + address + "/");