jquery来自绑定函数的animate变量

时间:2011-11-29 21:22:07

标签: javascript jquery variables jquery-animate

http://jsfiddle.net/motocomdigital/c8Mey/1/

我正在使用一个Twitter脚本,我正在绑定一个函数来获取div#tweet的动态高度,一旦推文被加载。

但是之后我需要将该变量传递给.animate脚本 - 这是我到目前为止所做的。

    $("#tweet").tweet({
        count: 1,
        username: ["motocomdigital"],
        loading_text: "searching twitter...",
        intro_text: null,
        outro_text: null
    }).bind("loaded", function(){

        // this binded function is getting the height of tweet div once loaded...
        var tweetHeight = $("#tweet").height();

    });

然后我需要将变量 tweetHeight 传递到我正在下面运行的动画脚本中。简单的我想,但我认为我的编码有点不对。

    $latestTweet.hover(function() {
        // see variable in this is first alternation
        $latestTweet.stop().animate({ top: "-" + tweetHeight + "px", width: "512px", 
    }, function() {
        $latestTweet.stop().animate({ top: "-1px", width: "334px", backgroundColor: "#464848" }, 300);
    });

让我们说div#tweet height(一旦加载了twitter内容)是200px,我需要这个变量的结果...

$latestTweet.stop().animate({ top: "-200px", width: "512px",

任何人都可以帮助我理解如何正确地写这个 - 我甚至尝试将我的动画脚本放在绑定函数中,但仍然没有传递变量。

主要更新

我刚刚弄明白为什么它给#tweet div的错误高度!这是因为我的#tweet div有顶部和底部填充, .height 在创建 tweetHeight 变量时不包括这些尺寸,请参阅jsfiddle here

有谁知道如何为我的 tweetHeight 变量添加固定像素尺寸?例如额外50px?

为什么我将它绑定到twitter javascript的原因是因为#tweet div的高度是动态的高度,因此从顶部位置动画,总是需要#tweet div的最终高度来定位它很完美。有关简化演示jsfiddle here的信息,请参阅。

1 个答案:

答案 0 :(得分:0)

您只需要在函数外部创建一个变量:

var tweetHeight = 200; // a default height
// here come's the $.tweet() code, and you should only assign the new value to the "tweetHeight" variable

//$latestTweet.stop().animate({ top: -tweetHeight ...

更新为“主要更新”

如果使用函数设置变量值,则可以操作此额外像素:

var tweetHeight = 200;
function setTweetHeight(h) {
    tweetHeight = h + 50;
}

现在使用该函数分配新值:

setTweetHeight( $('#tweet').height() ); // example