Created
July 16, 2013 00:31
-
-
Save kharmabum/6004785 to your computer and use it in GitHub Desktop.
Animates the dimensional changes resulting from altering element contents. Taken from Discourse source.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Animates the dimensional changes resulting from altering element contents | |
// Usage examples: | |
// $("#myElement").showHtml("new HTML contents"); | |
// $("div").showHtml("new HTML contents", 400); | |
// $(".className").showHtml("new HTML contents", 400, | |
// function() {/* on completion */}); | |
(function($) | |
{ | |
$.fn.showHtml = function(html, speed, callback) | |
{ | |
return this.each(function() | |
{ | |
// The element to be modified | |
var el = $(this); | |
// Preserve the original values of width and height - they'll need | |
// to be modified during the animation, but can be restored once | |
// the animation has completed. | |
var finish = {width: this.style.width, height: this.style.height}; | |
// The original width and height represented as pixel values. | |
// These will only be the same as `finish` if this element had its | |
// dimensions specified explicitly and in pixels. Of course, if that | |
// was done then this entire routine is pointless, as the dimensions | |
// won't change when the content is changed. | |
var cur = {width: el.width()+'px', height: el.height()+'px'}; | |
// Modify the element's contents. Element will resize. | |
el.html(html); | |
// Capture the final dimensions of the element | |
// (with initial style settings still in effect) | |
var next = {width: el.width()+'px', height: el.height()+'px'}; | |
el .css(cur) // restore initial dimensions | |
.animate(next, speed, function() // animate to final dimensions | |
{ | |
el.css(finish); // restore initial style settings | |
if ( $.isFunction(callback) ) callback(); | |
}); | |
}); | |
}; | |
})(jQuery); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment