Hier is mijn mening over, met caching van de selectors die worden opgeroepen (en de voor de hand liggende sluitingsscope, daarom zet ik het $ (venster) .load ();
daar), je hebt betere algehele prestaties.
Je moet cachen als je aan het animeren bent. U moet. Animeer niet steeds opnieuw op een opnieuw geselecteerde jQuery-objectoproep zoals $ ('. Map_wrapper'). Stop (). Anim()
. Het is inefficiënt en moet alleen worden uitgevoerd wanneer dat nodig is, zoals wanneer de DOM is gewijzigd en de huidige status moet worden gevonden.
Mijn benadering schakelt de variabele effect
gewoon in met nieuwe instellingen als de .toggle
zich op de knop bevindt. Eenvoudig, betrouwbaar. Er lijkt soms een lichte vertraging te zijn als het iframe
wordt geladen vanuit Google Maps. Dat kan onvermijdelijk zijn in de jsFiddle-omgeving.
$(window).load(function(){
var $mapbtn = $('.map_btn'),
$wrapper = $('.map_wrapper');
$mapbtn.click(function() {
var $this = $(this),
effect = { opacity: 0, height: 0 };
$this.toggleClass('toggle');
if ($this.is('.toggle')) {
effect.opacity = 1;
effect.height = 420;
}
$wrapper.stop().animate(effect);
});
});
http://jsfiddle.net/userdude/h2fh6/21/