2013-03-28 26 views
2

我正在嘗試使用jQuery添加CSS3轉換,以更改樣式的CSS屬性。 (我想這樣做與transform3d,但屬性是動態的...)與jQuery的CSS3過渡只在暫停後工作?

這可能是一個非常愚蠢的事情,但我不知道爲什麼,如果我做一個alert更新前的CSS屬性, CSS3過渡效果很好。如果沒有,它不會。

我這裏用的例子中的jsfiddle,只是發表意見alert如果你要明白我的意思: http://jsfiddle.net/7WPT8/1/

用於更新CSS代碼是:

//topPosition is the dynamic value 
$(this).css('top', topPosition+'px'); 

它只如果我之前使用alert,則可以使用。

+0

哇,這很奇怪。我從來沒有見過這樣的事情:O – Doorknob

回答

2

斯文是正確的,這是一個時間問題。它也可以通過使用最少的超時觸發CSS屬性的變化,避免(在其從一開始就在文檔中的flashmessage情況下不是一個選項) - 檢查http://jsfiddle.net/7WPT8/5/

(我使用VAR _this在這裏通過關閉將jQuery元素傳遞給匿名函數 - 否則,它不知道$(this)是因爲通過超時分離執行的。)

+0

聽起來不錯!我猜是1毫秒吧? – Alvaro

+0

爲什麼它需要延遲btw? – Alvaro

+0

我注意到,當我想顯示多條消息時,它無法按預期工作。這就是我的意思:http://jsfiddle.net/7WPT8/7/。現在嘗試取消註釋'setTimeout'行。任何解決方案?謝謝! – Alvaro

2

您正在創建元素,然後直接調用函數showFlash()之後使用元素的位置。序列中可能存在時間問題,alert()會中斷當前序列,因此它可以工作。

要以簡單的方式防止這種情況,請將您的div直接添加到您的內容中。

http://jsfiddle.net/7WPT8/4/

+0

我寧願不這樣做。該消息是動態生成的,自啓動以來,div也會導致代碼發生一些變化。 – Alvaro