如何访问函数内的函数属性

时间:2011-07-20 16:04:19

标签: javascript

如何在isExpanded的jQuery点击处理程序中访问collapsedHeightexpandedHeightelement现在写的方式赢了'因为this意味着点击处理程序中的其他内容与其外部的内容相同。

function CoolSelect(element)
{
    this.element=element;
    this.isExpanded=false;
    this.collapsedHeight=$(element).height();
    this.expandedHeight=this.collapsedHeight+$('ul',element).height();

    $(this.element).click(function()
    {
        var newHeight;
        if(this.isExpanded){newHeight=this.collapsedHeight;}
        else{newHeight=this.expandedHeight;}
        $(this.element).animate({height:newHeight},100,'liniar');
    });
}

谢谢。

2 个答案:

答案 0 :(得分:3)

this的值复制到外部函数中的另一个变量。

var that = this;

然后在内部函数中使用that

答案 1 :(得分:3)

您需要保存对此的引用。 此代码使用var that = this;

function CoolSelect(element)
{
    this.element=element;
    this.isExpanded=false;
    this.collapsedHeight=$(element).height();
    this.expandedHeight=this.collapsedHeight+$('ul',element).height();
    var that = this;

    $(this.element).click(function()
    {
        var newHeight;
        if(that.isExpanded){newHeight=that.collapsedHeight;}
        else{newHeight=that.expandedHeight;}
        $(that.element).animate({height:newHeight},100,'liniar');
    });
}