是否可以使用jQuery以编程方式设置html attr值?

时间:2013-08-02 22:49:20

标签: jquery html css dom animation

我想创建“回旋镖”动画(链式动画,第二个动画将所选元素[s]恢复为原始值)。

如果我的假设是正确的,那么元素的attr值将被视为它们的原始值(IOW,在被第一个jQuery动画改变后没有更新),应该(至少在理论上)可以以编程方式将它们设置回来像这样(伪文本):

$('something').animate( { fontSize: 1.5em, other stuff... } ).animate( { fontSize: $('something').attr(fontSize } ) ...

我在做梦吗?另一种选择是在回调函数中的.AddClass()在初始动画之后将值设置回来,但我更喜欢另一种方法,如果可能的话;通过AddClass()设置它将比一个超速的子弹非常生涩/快速,看起来像“stoopid。”

2 个答案:

答案 0 :(得分:1)

如果你想阅读css属性,请不要

var size = $('something').attr(fontSize };

var size = $('something').css('font-size');

$('#someId').animate({fontSize: size},3000);

答案 1 :(得分:1)

fontSize是一个CSS属性,不是可以使用.attr()设置或检索的元素属性。你可以这样做:

$('something').data("fontSize",$('something').css("fontSize"))
              .animate( { fontSize: "1.5em" }, 1000 )
              .animate( { fontSize: $('something').data("fontSize")}, 1000 );

......但它有点笨重。您也可以使用局部变量来记住属性:

var $something = $('something'),
    fontSize = $something.css("fontSize");
$something.animate( { fontSize: "1.5em" }, 1000 )
          .animate( { fontSize: fontSize}, 1000 );

另请注意,您的原始代码存在语法错误:您需要将1.5em放在引号中。

  

“我想创建”回旋镖“动画”

您是否考虑过只创建一个boomerang插件,以便您可以说:

$('something').boomerang( {fontSize: "1.5em"});

然后任何笨拙都会包含在插件中,当你使用它时你不必看到它......