如何在isExpanded
的jQuery点击处理程序中访问collapsedHeight
,expandedHeight
和element
。现在写的方式赢了'因为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');
});
}
谢谢。
答案 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');
});
}