开发者

Reverting jquery animations back to original css states

I've got a page of elements, each of which, depending on user interaction, may be animated away by the given function:

function slideAndFade(id){
    $(id).animate({opacity: 'toggle', width: 'toggle'}, 500);
}

I want to create a reset function that brings all the elements back onto the page. Running all the elements through the toggle function above won't work, because currently hidden elements will be shown, and currently shown elements will be hidden.

Essentially looking for way to revert all elements to their original css states, regardless of whether they've been acted upon by jquery animation.

Thanks-

Edit:

Just realized all I need to do is replace 'toggle' with 'show':

function revertSlideAndFade(id){
    $(id).animate({opacity: 'show',开发者_如何学JAVA width: 'show'}, 500);
}

Calling this on any element will ensure the element is reverted back to visible in this case. However, see Nick's answer below for a more generally applicable approach.


If you could identify all the elements that might be passed into this function, say they had a class .toggleElem you could use that to store the values on page load and restore then when needed, like this:

$(function() {
  $(".toggleElem").each(function() {
    var $this = $(this);
    $.data(this, 'css', { opacity: $this.css('opacity'), 
                          width: $this.css('width') });
  });
});

Then you could restore them at any point later:

function restore() {
  $(".toggleElem").each(function() {
    var orig = $.data(this, 'css');
    $(this).animate({opacity: orig.opacity, width: orig.width}, 500);
  });
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜