合并到这个jQuery

时间:2012-05-24 12:47:11

标签: jquery merge this

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);

但没有工作

你有解决方案吗?

谢谢!

1 个答案:

答案 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()来检索正确的框架对象。