JQuery动画不运行动态更改的元素

时间:2012-07-06 18:41:12

标签: javascript events jquery-animate 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事件有关,但从字面上看,现在任何见解都会非常有用。 =)

由于

1 个答案:

答案 0 :(得分:-1)

如果feat_expanded_div是一个jquery对象

(被宣布为如此.. var feat_expanded_div = $(“blahblah element”);)

然后你不应该将它包装在另一个$()中,换句话说就是这样做

feat_expanded_div.animate(d,speed);