【问题标题】:Is it possible to programmatically set html attr values with jQuery?是否可以使用 jQuery 以编程方式设置 html attr 值?
【发布时间】:2013-08-04 08:02:02
【问题描述】:

我想创建“回旋镖”动画(链式动画,第二个动画将所选元素返回到它们的原始值)。

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

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

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

【问题讨论】:

  • 在样式和属性方面有很大的不同?
  • 我宁愿将它存储在一个变量中,而不是在 animate-animate dont know 中请求它

标签: jquery html css dom animation


【解决方案1】:

如果你想阅读 css 属性就不要

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

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

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

【讨论】:

  • 那么我可以使用该代码“fontSize: fontSize”吗?我会为 var 命名不同的名称,以避免混淆......
  • 不,我认为这更像是我的编辑,但它很烦人,所以另一个编辑
【解决方案2】:

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"});

那么任何笨拙的东西都会包含在插件中,您在使用时不必看到它......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多