2011-03-27 63 views
1

我有一個函數,動畫dom元素與CSS3(如果可用)。現在我經常使用jQuery選擇器:animeted。我如何讓我的CSS3動畫元素也響應:animeted選擇器?手動添加「:動畫」選擇器到jQuery對象

當一個DOM對象與jQuery的動畫它得到"fxqueue":"inprogress"的數據對象,所以我想我可以用手動添加我的元素:

$("div").eq(0).data({"fxqueue": "inprogress"});

console.log($("div:animated"))

不會選擇任何內容。

回答

1

這是行不通的。
:animated濾波器被定義爲

jQuery.expr.filters.animated = function(elem) { 
    return jQuery.grep(jQuery.timers, function(fn) { 
     return elem === fn.elem; 
    }).length; 
}; 

它檢查該元素是否是jQuery.timers

相反,你可以更換:animated選擇:

var originalAnimated = jQuery.expr.filters.animated; 
jQuery.expr.filters.animated = function(elem) { 
    return originalAnimated(elem) || something; 
}; 
+0

好謝謝!但我認爲我沒有得到一切。如果可以說我是否已經在由我的函數動畫的元素上設置了.data(「css3animate」,true),那麼「什麼」(在你的例子中)會怎麼做? (http://jsfiddle.net/backflip/BqFsM/) – meo 2011-03-27 12:34:28

+0

@meo:'something'會是任何條件。你可能會寫'|| $ .data(elem,'css3animate')'。 – SLaks 2011-03-27 13:14:42

+0

啊,我非常感謝你! – meo 2011-03-27 14:06:20