JavaScriptでは、this
は、完全にによって定義され、どのように機能がと呼ばれていますか。 jQueryのeach
関数は、与えられた反復子関数を各要素の値にthis
を設定する方法で呼び出します。したがって、その反復子関数内では、this
はそのコードの残りの部分で参照したものを参照しなくなります。
これは簡単にクロージャのコンテキスト内の変数を用いて固定されています
あり
clusters.prototype.shop_iqns_selected_class = function() {
var self = this; // <=== The variable
if(this.viewport_width < 980) {
$(this.iqns_class).each(function() {
// Do this *once*, you don't want to call $() repeatedly
var $elm = $(this);
// v---- using `self` to refer to the instance
$(self.iqn).on('click', function() {
// v---- using $elm
if($elm.hasClass('selected')) {
$elm.removeClass('selected');
} else {
$elm.addClass('selected');
}
});
});
}
}
私は各DOM要素を参照するためにthis
を使用し続けてきましたが、ありますので、あなたはイテレータ関数に引数を受け入れることができますあいまいん:
clusters.prototype.shop_iqns_selected_class = function() {
var self = this; // <=== The variable
if(this.viewport_width < 980) {
// Accepting the args -----------v -----v
$(this.iqns_class).each(function(index, elm) {
// Do this *once*, you don't want to call $() repeatedly
var $elm = $(elm);
// v---- using `self` to refer to the instance
$(self.iqn).on('click', function() {
// v---- using $elm
if($elm.hasClass('selected')) {
$elm.removeClass('selected');
} else {
$elm.addClass('selected');
}
});
});
}
}
もっと読み(私のブログで記事についてのthis
JavaScriptで):
`cluster`機能をインスタンス化するとき0
一つの質問しかし、(上記の)この機能は自動的に実行されますか?なぜなら、 'if()'ステートメントが満たされていれば、それが起こりたいからです。 – Roland
@Roland:喜んで助けました。 'var c = new cluster();'を実行すると、戻ったオブジェクトは 'cluster.prototype'オブジェクトによってバックアップされます。 'shop_iqns_selected_class'関数を呼び出すには、' c.shop_iqns_selected_class(); 'を実行します(サイドノート:JSの圧倒的なコンベンションは、' cluster'ではなく 'Cluster'のように、 ) –
私が今見ているのは、ヴァルスが全く意味を持たない理由です。しかし、別に起動する必要がなくても、その機能を動作させる方法はありません。 – Roland