var bottomStack = function () {
"use strict";
...
jQuery('#bottomstacktitle', this.frame).bind('click', this.toggleFrame);
};
var = bottomStackExtends = {
...
toggleFrame: function (animate) {
"use strict";
if (false !== animate) {
animate = true;
}
this.frame[((animate) ? 'animate' : 'css')]({bottom: (this.bottomStackClosed ? -180 : 0)});
jQuery.cookie("bottomStackClosed", (!this.bottomStackClosed).toString());
},...
};
当它运行时,调试器会说:“未捕获的异常:TypeError:无法将'this.frame'转换为对象”。是的,因为这个“this”不是“this”,而是“this”是jQuery('#bottomstacktitle',this.frame)。所以我可以合并到这个“this”例如:.frame tag?
我试过了:
var bottomstacktitle = jQuery('#bottomstacktitle', this.frame);
bottomstacktitle.frame = this.frame;
bottomstacktitle.bind('click', this.toggleFrame);
但没有工作
你有解决方案吗?
谢谢!
答案 0 :(得分:0)
您可以使用jQuery检索最接近的frame
:
var bottomStack = function () {
"use strict";
...
jQuery('#bottomstacktitle', this.frame).bind('click', this.toggleFrame);
};
var bottomStackExtends = {
toggleFrame: function (animate) {
"use strict";
var currentFrame = jQuery(this).closest("frame").get(0);
currentFrame[!!animate ? 'animate' : 'css']({
bottom: this.bottomStackClosed ? -180 : 0
});
jQuery.cookie("bottomStackClosed", !this.bottomStackClosed));
}
// ...
};
jQuery确保this
始终指向函数使用的元素。
在click
处理程序中,它将是接收到点击('#bottomstacktitle'
)的元素。由于该元素包含在您的框架中,因此您可以使用.closest()
来检索正确的框架对象。