最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Reverting jquery animations back to original css states - Stack Overflow

programmeradmin5浏览0评论

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', 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.

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', 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.

Share Improve this question edited May 23, 2017 at 12:24 CommunityBot 11 silver badge asked Sep 1, 2010 at 15:34 YarinYarin 184k155 gold badges410 silver badges524 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 5

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)

  1. 暂无评论