放慢我的JavaScript!如何让我的代码在执行之前等待过渡完成?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了放慢我的JavaScript!如何让我的代码在执行之前等待过渡完成?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2677字,纯文字阅读大概需要4分钟。
内容图文
![放慢我的JavaScript!如何让我的代码在执行之前等待过渡完成?](/upload/InfoBanner/zyjiaocheng/687/bc36092e47a249638801dc6513030461.jpg)
我猜奇怪的问题,但是我的页面中有这段代码…
$(".map-overlay-left").click(function () {
$("#map-holder").hide('slow');
var gmarkers = [];
var side_bar_html = "";
var map = new GMap2(document.getElementById('map-holder'));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
var Africa = new GLatLng(-2.767478,23.730469);
map.setCenter(Africa, 4);
$.get("http://xx.xxx.xxxx.xxx/xml-feed-google-maps",{},function(xml) {
$('marker',xml).each(function(i) {
html = $(this).text();
lat = $(this).attr("lat");
lng = $(this).attr("lng");
label = $(this).attr("label");
var point = new GLatLng(lat,lng);
var marker = createMarker(point,label,html);
map.addOverlay(marker);
});
});
$("#map-holder").show('slow');
});
这非常有效,并且可以实现我所需要的功能,而不是UI明智的选择.它的意思是首先进行一个很好的过渡,以隐藏div的“ map-holder”,在其中渲染google map,然后再进行过渡到大小的过渡.过渡是默认的JQuery显示/隐藏.
现在,我似乎遇到的问题是,在此$(“#map-holder”).hide(‘slow’);时正在渲染Google Map.仍在运行,您会在隐藏之前看到地图的一瞥,然后再次打开,这有点不利于整体效果.
因此,有人知道我如何放慢代码的速度,以等待hide函数完成之后再进行其余操作? (理想情况下,我不想使用诸如setTimeout这样的硬编码的东西).
提前致谢!
沙迪
更新1
我已经对hide函数进行了回调,但是它对GMap产生了非常奇怪的影响.在Chrome / FF / Safari中,当地图显示时,它只会在地图的一角呈现一小段.而在IE中,它完全被抛弃并集中在其他位置. GMap似乎不喜欢在隐藏的div中渲染.
您可以在此处看到它在前面的http://afid.staging.dante-studios.com/(只需按亚洲或非洲的播放按钮即可看到怪异的效果).
有关如何解决此问题的任何想法?
更新2
尝试通过以下方法解决Google Map无法在隐藏的div中正确呈现的问题:
$(".map-overlay-left").click(function () {
$("#map-holder").hide('slow', function(){
var gmarkers = [];
var side_bar_html = "";
var map = new GMap2(document.getElementById('map-holder'));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
var Africa = new GLatLng(-2.767478,23.730469);
map.setCenter(Africa, 4);
$.get("http://afid.staging.dante-studios.com/xml-feed-google-maps",{},function(xml) {
$('marker',xml).each(function(i) {
html = $(this).text();
lat = $(this).attr("lat");
lng = $(this).attr("lng");
label = $(this).attr("label");
var point = new GLatLng(lat,lng);
var marker = createMarker(point,label,html);
map.addOverlay(marker);
});
});
});
$("#map-holder").show('slow');
map.checkResize();
map.setCenter(Africa, 4);
});
但是,遗憾的是map.checkResize();方法.有任何想法吗?
解决方法:
动画完成后,请使用callback to .hide来执行工作:
$("#map-holder").hide('slow', function() {
var gmarkers = [];
var side_bar_html = "";
// ...
$("#map-holder").show('slow');
})
内容总结
以上是互联网集市为您收集整理的放慢我的JavaScript!如何让我的代码在执行之前等待过渡完成?全部内容,希望文章能够帮你解决放慢我的JavaScript!如何让我的代码在执行之前等待过渡完成?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。