为什么我无法从元素中删除内联样式

时间:2013-01-12 19:14:14

标签: jquery html css

我需要在所有动画完成后从元素中完全删除不透明度样式 http://jsfiddle.net/SthJy/1/

我尝试设置css('opacity', '')removeAttr('style')但没有效果,仍然存在inilne风格。 有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:2)

delay不适用于css()removeAttr(),因为它们不可排队。阅读delay() docs

中的更多内容

您需要在最终动画的完整callack中使用css()removeAttr()

 $("#helpCloud").animate({opacity: 1}, 200)
                .delay(2200)
                 .animate({  opacity: 0 }, 200, function(){
                      setTimeout(function(){
                          $(this).removeAttr('style');
                      }, 300);
                 });

由于css中元素的默认不透明度为零,因此不确定您希望看到的内容

API引用:http://api.jquery.com/delay

答案 1 :(得分:2)

通过使用.queue(),你可以继续与动画同步。

$("#helpCloud").animate({ opacity: 1 }, 200)
            .delay(2200)
            .animate({ opacity: 0 }, 200)
            .delay(300)
            .queue(function(next) {
              $(this).css('opacity', '');
              alert('happend only after .delay is over');
              next()
             })

现场演示:http://jsfiddle.net/SthJy/3/

获得相同结果的另一种方法是在.dalay(300,function(){})上使用回调;

$("#helpCloud").animate({ opacity: 1 }, 200)
                .delay(2200)
                .animate({ opacity: 0 }, 200)
                .delay(300, function() {
                  $(this).css('opacity', '');
                  alert('happend only after .delay is over');
                });

现场演示:http://jsfiddle.net/SthJy/4/