0

thisセレクターをキャッシュしようとしていますが、機能させることができません。

$(function () {

   var $this = $(this);
    //some code

     $('.collapse').each(function(index) {
       $this.collapse("toggle");
     });

私は上記で何を間違っていますか?

$(function () {

   var self = $(this);

   $(document).on('click', '.expand-collapse', function(e) {

     $('.collapse').each(function(index) {
       self.collapse("toggle");
     });

     if self.is('.i .icon-white .icon-plus-sign')) {
        self.toggleClass("is-collapsed")
     }
     else {
         self.toggleClass('is-collapsed');
     } 
    });
});

上記のコードを更新しました

4

2 に答える 2

2

これは実際には意味がありません。要素を反復処理する場合、1つの一意の要素のみで関数を呼び出したくないでしょう。

ここには何もありません。

于 2013-03-06T20:16:38.467 に答える
1

定義したグローバルコンテキストでの$(this)は、ドキュメント全体を参照しているため、意味がありません。クリック/ループオーバーしている個々のオブジェクトへの参照をキャッシュする場合は、イベントハンドラー/ループのコンテキストに変数を配置します。

あなたのコードでは、現在のところ、現在のオブジェクトを$(this)として単純に参照し、同じ結果を達成できるため、その参照を「キャッシュ」する理由はないようです(実際にしようとしている場合を除く)ドキュメント全体への参照を保持します)。

さらに、変数名「self」は、従来は現在のウィンドウオブジェクトを参照するJavaScriptの単語であるため、その参照を上書きしています。その名前を_selfまたは他の名前に変更することをお勧めします。

于 2013-03-06T21:09:45.963 に答える