Google 地图和 jQuery 选项卡
我对简单 jQuery 选项卡中包含的 Google 地图有一些小问题。
下面我粘贴了代码:
jQuery:
$(document).ready(function() {
//Default Action
$(".tab_content").hide();
$("ul.tabs li:first").addClass("active").show();
$(".tab_content:first").show();
//On Click Event
$("ul.tabs li").click(function() {
$("ul.tabs li").removeClass("active");
$(this).addClass("active");
$(".tab_content").hide();
var activeTab = $(this).find("a").attr("href");
$(activeTab).fadeIn();
return false;
});
});
这是选项卡的 HTML:
<div class="bluecontainer">
<ul class="tabs">
<li><a href="#tab1">Tab1</a></li>
<li><a href="#tab2">Tab2</a></li>
<li><a href="#tab3">Tab3</a></li>
<li><a href="#tab4">Tab4</a></li>
</ul>
<div class="tab_container">
<div id="tab1" class="tab_content">
<h2>Tab1</h2>
</div>
<div id="tab2" class="tab_content">
<h2>Tab2</h2>
</div>
<div id="tab3" class="tab_content">
<div>
google Map
</div>
</div>
<div id="tab4" class="tab_content">
<h2>Tab4</h2>
</div>
</div>
</div>
我真的不知道该怎么办。这是谷歌地图的普遍问题还是我的标签有问题?但他们在其他方面都工作得很好。
感谢您提前的帮助
I have slight problem with Google maps included in simple jQuery Tabs.
Below I pasted the code:
jQuery:
$(document).ready(function() {
//Default Action
$(".tab_content").hide();
$("ul.tabs li:first").addClass("active").show();
$(".tab_content:first").show();
//On Click Event
$("ul.tabs li").click(function() {
$("ul.tabs li").removeClass("active");
$(this).addClass("active");
$(".tab_content").hide();
var activeTab = $(this).find("a").attr("href");
$(activeTab).fadeIn();
return false;
});
});
Here is the HTML for the tabs:
<div class="bluecontainer">
<ul class="tabs">
<li><a href="#tab1">Tab1</a></li>
<li><a href="#tab2">Tab2</a></li>
<li><a href="#tab3">Tab3</a></li>
<li><a href="#tab4">Tab4</a></li>
</ul>
<div class="tab_container">
<div id="tab1" class="tab_content">
<h2>Tab1</h2>
</div>
<div id="tab2" class="tab_content">
<h2>Tab2</h2>
</div>
<div id="tab3" class="tab_content">
<div>
google Map
</div>
</div>
<div id="tab4" class="tab_content">
<h2>Tab4</h2>
</div>
</div>
</div>
I really don't know what to do to. Is that a general problem with google maps or there is something with my tabs? But they are working just fine with everything else.
Thank you for your help in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
我已经解决了这个问题。
将 jQuery 中的 hide() 更改为 css.visibility,因此选项卡如下所示。
一切都很好。
I have solved the problem.
changed hide() in jQuery to css.visibility, so the tabs looks like this.
Everything works just fine.
Bootstrap3:https://github.com/twbs/bootstrap/issues/2330
Bootstrap3 : https://github.com/twbs/bootstrap/issues/2330
我采用了不同的方法 - 在激活选项卡后初始化地图。
这是我的代码:
确保带有地图 ID 的选项卡与脚本的 ID 匹配。就我而言,它是“location_tab”。
I went with a different approach - initialize the map after the tab is activated.
Here's my code:
Make sure that the tab with your map's ID matches with the script's. In my case its "location_tab".
打开选项卡时初始化地图绝对是正确的方法。
如果您尝试在隐藏的 div 上初始化地图,那么它将无法显示。
无论您有什么函数来“显示”您的 div,请在显示 div 后使用该函数初始化地图。
加载地图后,您可以安全地隐藏或再次显示 div,不会出现任何问题,因此值得添加一个标志来检查它是否已加载。
Initialising the map when the tab is opened is definitely the way to go.
If you try to initialise the map on a hidden div, then it will fail to display.
Whatever function you have that 'shows' your div, use that function to initialise the map AFTER the div has been shown.
Once the map has been loaded, you can safely hide or show the div again without any problems, so it's worth adding a flag to check whether it's already been loaded.
您使用的是 Google Maps API v2 或 v3 吗?过去曾有过关于此问题的多个问题,例如 这个(它也链接到其他一些类似的问题)。可能值得阅读这些内容,看看建议的解决方案是否适合您。
[编辑] 根据您下面的评论,我建议尝试使用不透明动画而不是
fadeIn
:我自己将其用于使用 Google Maps API v3 和 JQuery(不是 JQuery 选项卡)的页面,不过),它对我来说效果很好。
Are you using v2 or v3 of the Google Maps API? There have been several questions about this problem in the past, for example this one (which also links to some of the other similar questions). It might be worth reading through those and see if any of the suggested solutions work for you.
[edit] Based on your comments below I would suggest to try and use an opacity animation rather than the
fadeIn
:I have used it myself for a page using Google Maps API v3 and JQuery (not the JQuery tabs, though) and it worked fine for me.
当您隐藏元素时,Google 地图无法正常工作,就像 jquery 选项卡在更改选项卡时那样。
最简单的解决方案是将 google 地图初始化函数绑定到 jquery tab 对象的 tabsshow 事件。
此解决方案可与依赖于 DOM 元素宽度和隐藏的任何其他插件(例如 jquery masonry 插件)配合使用。
Google maps does not work well when you hide elements like jquery tabs does when you change tabs.
The simplest solution is to bind google map initialization function to the tabsshow event of the jquery tab object
This solution works with any other plugins which depends on width and hide of a DOM element such as the jquery masonry plugin.
如果你仍然像我一样努力做到这一点,请尝试这个。
我已将上面的其他答案改编为更新的内容。
If you are still struggling to get this right like I was, Try this.
I have adapted the other answers above into something more current.
我也一直在为此苦苦挣扎。因此,我将提供帮助我完成此任务的代码,感谢 Fuzz 提供的代码(很抱歉我无法投票给你的答案,因为我没有足够的声誉...)
我使用高级自定义字段来显示 Google 地图。我使用了 ACF 网站上文档的 ACF 提供的代码,并修改了最后一点(“文档就绪”部分),以便能够使用 Bootstraps 折叠显示我的地图。带有地图的 div 被折叠脚本隐藏,当它显示时,用于显示地图的 javascript 将被触发。隐藏地图后,我遇到了再次显示地图时地图位置设置消失的问题。在 Fuzz 的脚本的帮助下,我让它正常工作。希望这也能帮助其他人。
I have been struggling with this as well. So I will provide the code which helped me get this done, thanks to the code provided by Fuzz (I'm sorry I can't vote your answer up as I don't have enough reputation...)
I use Advanced Custom Fields for displaying a Google Map. I used the code provided by ACF of the documentation on the acf website and modified the last bit (The "Document ready" part) to be able to show my map using Bootstraps collapse. The div with the map is hidden by the collapse script and when it is shown the javascript for showing the map will be fired. After hiding the map I faced the problem that the maps location settings were gone when showing the map again. With the help of Fuzz's piece of script I got it working correctly. Hopefully this will help others as well.