簡體   English   中英

循環內的項目的單擊事件觸發兩次

[英]Click event fires twice for item inside a loop

所以問題是我有leafletjs map,使用我從獲取中獲得的一些數據我將新標記添加到map。 有一個循環遍歷數據,它為“destination from”和“destination to”創建並放置一個新標記。

問題是在單擊其中一個標記后,事件會觸發兩次。 例如,我嘗試使用一個變量來保存最后一次點擊時間並將其與新的比較,但它不能解決問題。 當我更改循環使其僅添加 1 個標記時,事件仍會觸發兩次。 你能看出可能是什么原因嗎?

另一個額外的問題(如果有人可以看到為什么會發生這種情況)是在單擊一個標記(從/到) (事件觸發兩次)並單擊任何其他標記(不屬於先前單擊的對)之后,我在package.addressFrom上得到未定義的錯誤

function prepare(data)
{
    for(var i=0; i < data.length; ++i)
    {
        var markeFrom = L.marker([data[i].latFrom, data[i].lngFrom], {myCustomClass: data[i].id}).addTo(myMapAll).on('click', markerClicked);
        var markerTo = L.marker([data[i].latTo, data[i].lngTo], {myCustomClass: data[i].id}).addTo(myMapAll).on('click', markerClicked);
        
        packageInfo["id"] = data[i].id;
        packageInfo["addressFrom"] = data[i].destinationFrom;
        packageInfo["addressTo"] = data[i].destinationTo;
        packageInfo["recipient"] = data[i].recipient;
        packageMapInfoArr.push(packageInfo);
    }
}

function markerClicked() 
{
    var clickedMarkerId = this.options.myCustomClass;
    var package = packageMapInfoArr.find(x => x.id === clickedMarkerId);
    
    alert('From:' + package.addressFrom + '\n' +
            'To:' + package.addressTo + '\n' +
            'Recipient:' + package.recipient);
}

在此處輸入圖像描述

這些屏幕截圖似乎來自 Safari web 瀏覽器,因此您很可能遇到了已知的 Leaflet 問題 #7255 使用任何其他 web 瀏覽器應該澄清是否是這種情況。

在撰寫本文時,此錯誤尚無干凈的解決方案,但當前的解決方法是禁用tap處理程序(通過初始化L.Map實例時tap選項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM