0
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' をオブジェクトに変換できません」と表示します。はい、これは「これ」ではなく、「これ」が jQuery('#bottomstacktitle', this.frame) であるためです。たとえば、この「これ」にマージできますか: .frame タグ?

私は試した:

var bottomstacktitle = jQuery('#bottomstacktitle', this.frame);
    bottomstacktitle.frame = this.frame;
    bottomstacktitle.bind('click', this.toggleFrame);

しかし、機能していません

何か解決策はありますか?

ありがとう!

4

1 に答える 1

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()して適切なフレームオブジェクトを取得できます。

于 2012-05-24T13:16:28.813 に答える