2012-07-06 62 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