2013-08-02 61 views
0

我想創建「迴旋鏢」動畫(鏈接動畫,第二個將選定元素[s]返回到它們的原始值)。是否有可能以編程方式設置html的attr值與jQuery?

如果我的假設是正確的,那麼元素的attr值將被視爲它們的原始值(IOW,在被第一個jQuery動畫更改後不會更新),它應該(至少在理論上)設置它們編程這樣(pseudoscript):

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

我在做夢嗎?另一個選擇是在初始動畫設置數值後,在回調函數中添加.AddClass(),但如果可能的話,我更喜歡其他方法;通過AddClass()將其設置回來會比超速子彈更快/更快,並且看起來「stoopid」。

如果你想讀的CSS屬性
+5

當涉及到樣式和屬性有很大的區別嗎? – adeneo

+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引號。

"I want to create "boomerang" animations"

你有沒有考慮剛創建boomerang插件,這樣你就可以說:

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

那麼任何clunkiness將包含插件裏面,你沒有看到它時,你使用它...

+0

Clunky如果運行良好並且可維護,並不全是壞的。 –

1

只是不

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

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

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

Silverlight(icon)? –

+0

所以我可以使用該代碼的「fontSize:fontSize」?我會將var命名爲不同的東西,以避免混淆... –

+0

不,我認爲它更像我的編輯,但它令人討厭,所以另一個編輯 –

相關問題