0

タイトルが間違っているかもしれませんが、質問の仕方がわかりませんでした。

JavaScript でのオブジェクト指向の記述を学習しようとしています。プロジェクトの 1 つを書き直しています。そのため、多くの匿名関数や重複したコードの代わりに、クラスのメソッドを使用できます。今、私は次のコードでエラーに直面しています:

var cart = {
    cartModal: $("#cart-modal"),
    $checkboxes: this.cartModal.find("input[name=check]"),
    //           ^^^^^^^^^^^^^^
    toggleModal: function(e) {
        this.cartModal.modal('toggle');
        this.handleCheckboxes();
        e.preventDefault();
    },
    handleCheckboxes: function() {
        this.cartModal.find("input.checkall").click(function() {
            $checkboxes.prop("checked", !$checkboxes.prop("checked"));
        });
    }

};
    $("#cart-link").click(function(e) {
        cart.toggleModal(e);
    });

しかし、私はこのエラーに直面し続けています:

TypeError: this.cartModal is undefined

オブジェクト内のプロパティを使用するには、他のものを使用する必要がありますか? それとも問題は別の場所にあるのでしょうか?

4

2 に答える 2

1

問題はここにあります:$checkboxes: this.cartModal.find("input[name=check]"),

thiscart現在のスコープを参照していませんthis。そのように宣言すると、現在のオブジェクトを参照できません。

より良い:

var modal = $("#cart-modal"),
    cart = {
        cartModal: modal,
        $checkboxes: modal.find("input[name=check]")
        ...
    }
于 2013-07-20T18:04:06.983 に答える
0

作成中は要素にアクセスできません。関数を使用するとうまくいくはずです。

$checkboxes: function(){return this.cartModal.find("input[name=check]")},

しかし、オブジェクト コンストラクターを使用することもできます。そこでthis.、作成しているオブジェクトを参照するために使用できます。

function YourObject() {
    this.$checkboxes = this.cartModal.find("input[name=check]");
    .......
}
于 2013-07-20T18:03:04.923 に答える