我可以在$(this)中添加变量吗?

时间:2011-09-25 20:30:15

标签: javascript jquery html

我有两个功能:

function animateOpen(){
    var originalPosition = $(this).css("left");
    var distance = $(this).getHorzontalDistanceToCenter();
    $(this).animate("left", "+="+distance);
    $('#button').click( function (){
        $(this).animate("left", originalPosition+"px");
    });
}
function animateClose(){
    $('#button').click();
}

我想将此代码转换为底部窗体(以删除对按钮的依赖关系):

function animateClose(){
    $(this).animate("left", originalPosition+"px");
}
function animateOpen(){
    var originalPosition = $(this).css("left");
    var distance = $(this).getHorzontalDistanceToCenter();
    $(this).animate("left", "+="+distance);
}

问题是,animateClose如何获得originalPosition?我能以某种方式把它放在$(this)吗?

3 个答案:

答案 0 :(得分:5)

您可以使用$(this).data('original_left', my_value)

保存原始位置

然后,使用$(this).data('original_left')

获取保存的值

答案 1 :(得分:4)

将其包装在一个封闭内并共享originalPosition

(function(){
    var originalPosition;
    function animateClose(){
        $(this).animate("left", originalPosition+"px");
    }
    function animateOpen(){
        originalPosition = $(this).css("left");
        var distance = $(this).getHorzontalDistanceToCenter();
        $(this).animate("left", "+="+distance);
    }
    window.animateClose = animateClose;
    window.animateOpen = animateOpen;
}());

答案 2 :(得分:4)

致电$(this).data('some name', value)

您可以稍后通过调用$(this).data('some name')来获取该值。