2012-07-06 47 views
2

好吧,我在我束手無策。這裏是我的代碼,或者至少是我認爲導致問題/與我的問題相關的部分。JQuery的動畫元素爲不運行動態改變

//clicking back contacts scenario 
$("#feat-back-arrow").live("click", function() { 
    contractFeature(); 
}); 

//undo expand function for feature 
// 
// 
function contractFeature() { 
    $(feat_expanded_div).removeClass("expanded-feat"); 
    //actual slow animation 
    var d = {}; 
    var speed = 400; 
    d.width = feat_orig_width; 
    d.height = feat_orig_height; 
    d.left = feat_offset_left; 
    d.top = feat_offset_top; 
    d.marginRight = "0px" 
    $(feat_expanded_div).animate(d, speed); 
    showFeatures(); 
    returnFeatureHeader(feat_expanded_div); 
    ExpandFeature = false; 
} 

我動態生成一個名爲#feat-back-arrow,單擊時按鈕,呼叫contractFeature(),並在特定的,運行的動畫事件。此事件不適用於feat_expanded_div(我將其定義爲全局變量等,並將其用於contractFeature()中的其他函數中)。完全沒有任何反應。現在

,如果我改變了我的代碼到這個部分:

var d = {}; 
     var speed = 400; 
     d.width = feat_orig_width; 
     d.height = feat_orig_height; 
     d.left = feat_offset_left; 
     d.top = feat_offset_top; 
     d.marginRight = "0px" 
     $("div").animate(d, speed); 

改變它,所以它只是所有div運行時,它工作正常。我知道問題不在於定義feat_expanded_div,因爲正如我所說的,函數returnFeatureHeader()將它作爲參數進行處理就好了。

我認爲這與.live事件有一個動畫事件有關,但從字面上看,現在的任何洞察都會非常有幫助。 =)

感謝

+0

你試過包裝'feat_expanded_div'引號只是爲了看看會發生什麼? – 2012-07-06 18:49:53

+0

feat_expanded_div是一個變量,但我可以嘗試,它被定義爲 變種feat_expanded_div = $(「blahblah元件」); – 2012-07-06 18:52:08

+0

將其放置在「」產生同樣的效果不存在=( – 2012-07-06 18:53:22

回答

-1

如果feat_expanded_div是

的jQuery(正在申報像這樣.. VAR feat_expanded_div = $( 「blahblah元素」);)

那麼你應該不換它在另一個$()。換句話說只是這樣做

feat_expanded_div.animate(d,速度);

+1

這似乎是完全正常的包裝一個jQuery對象$() - http://jsfiddle.net/n9Hp3/ – Ian 2012-08-25 21:25:38

+0

沒錯這就是可憐的標準,但它不會破壞代碼。 – 2012-08-25 22:11:08