0

Jquery widget の y コードの問題点を特定する際に問題に直面しています。public method 内で this.options を取得しようとしています。しかし、私はエラーが発生しています

「タイプ エラー: this.option が定義されていません」

" at bindOption at 正確に at

self.find(this.options.selectionGroup + " " + this.options.selectionElement)

this.options は、この範囲外に見えます。どこに行くのですか??

私のコードは以下のようになります:

 _create: function() {

                var self = this;
                var $el = this.element;

                $el.find(this.options.optionsGroup + " .option").on('click',
                        this.bindOption);
                this._hideToggle($el, this.options.optionsGroup, 'show');


            },
            bindOption: function() {

                $val = $(this).html();
                var self=this;
                $data = $(this).attr('data-option');
                 self.find(this.options.selectionGroup + " " + this.options.selectionElement)
                        .attr('data-selection', $data).html($val);

            }

解決済み:

bindOption で self.find を使用していましたが、要素に find() を適用する必要があるため、変更しました

self.find(this.options.selectionGroup + " " + this.options.selectionElement)

 self.element.find(this.options.selectionGroup + " " + this.options.selectionElement)
4

1 に答える 1

1

使用する必要があります

$el.find(this.options.optionsGroup + " .option").on('click', $.proxy(this.bindOption, this));

bindOptionはイベントへのコールバックとして追加されるため、内部thisbindOptionウィジェットを指さず、イベントをトリガーした dom 要素を参照します。$.proxy()を使用してカスタム実行コンテキストをコールバック ハンドラに渡すことで修正できます。

于 2013-08-07T03:32:40.003 に答える