gpt4 book ai didi

google-maps - Google Maps infowindow.setContent 作为带有 jQ​​uery 的 DOM 元素似乎只能工作一次?

转载 作者:行者123 更新时间:2023-12-04 07:42:09 25 4
gpt4 key购买 nike

我感到非常沮丧,我希望这里有人可以提供帮助。我有一个 map 应用程序, map 上有几个带有 infoWindows 内容定期更新的标记。我的解决方案是将将进入 DOM 中 infoWindow 的 div 放在一个隐藏容器中,该容器可以由我的更新程序代码在后台更新。然后我使用单个 infoWindow 并使用查询将内容设置为 DOM 元素:

google.maps.event.addListener(marker, 'click', function(){
infoWindow.setContent($(#"+id+"-window-content)[0]);
infoWindow.open(map, marker);
}

这东西很好用……一次。然后它不会再次为该制造商打开。我注意到如果我在一个标记(标记 A)上打开窗口,然后关闭它,然后在另一个标记(标记 B)上打开它,然后回到标记 A,窗口会出现在标记 A 旁边,但带有标记 B 的内容。

为什么我的脚本不会再次将内容设置为 DOM 元素...这几乎就像使用 jQuery 选择器从 DOM 中删除元素一样。

干杯,

白原子

再一次问好,

事实证明,当我试图在这里解释它时,我可能已经回答了我自己的问题。

将 DOM 元素传递给 setContent() 函数似乎实际上是将它从 DOM 中删除并将其放入 infoWindow,所以下次我尝试抓取它时,它不再存在。我的解决方法是在 jQuery 调用中添加一个 clone(),它现在似乎可以工作了。
google.maps.event.addListener(marker, 'click', function(){
infoWindow.setContent($(#"+id+"-window-content).clone()[0]);
infoWindow.open(map, marker);
}

当 DOM 元素传递给 setContent 时,任何人都可以确认这是它的行为吗?这是处理这个问题的最好方法吗?

干杯,

白原子

最佳答案

当您在 DOM 中更改元素的父元素时,该元素将被移动,而不是被复制。

所以我会假设这条线......

infoWindow.setContent($(#"+id+"-window-content)[0]);

将从其原始位置中删除元素“#id-window-content”。

当 infoWindow 关闭时,其中的 DOM 元素将被丢弃。

因此,当您第二次单击标记时,该元素不再存在。

尝试克隆该元素或向 infoWindow 提供 HTML 字符串。

希望这可以帮助

关于google-maps - Google Maps infowindow.setContent 作为带有 jQ​​uery 的 DOM 元素似乎只能工作一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9706696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com