2

jQuery を使用してコードを記述する場合、var self = $(this) を使用して、自分がいるオブジェクトの現在のコンテキストを参照していることに気付きます。例:

$('#myDiv').click(function(e){

var self = $(this);

self.css('background', 'red');

});

これはすばらしいことですが、オブジェクトごとにこのプロセスを繰り返さなければなりません。例:

$('#myDiv').hover(function(){

//hover over function
var self = $(this);
self.css('background', 'red');

}, function(){

//hover out function
var self = $(this);
self.css('background', 'blue');

});

私の質問は、self のグローバル変数を設定し、それを使用して現在のコンテキストを参照する方法があるかどうかです。したがって、self = $(this) をグローバルに設定したいのですが、どこで使用しても自動的に参照されます。私がいる現在のオブジェクト?

4

6 に答える 6

6

$(this).call()問題なく直接使用できます

于 2012-06-15T16:38:35.427 に答える
3

試す:

var myDiv = $('#myDiv');

myDiv.hover(function(){
    myDiv.css('background', 'red');
}, function(){
    myDiv.css('background', 'blue');
});
于 2012-06-15T16:36:11.730 に答える
1

同じスコープ内で再利用$(this)するには、現在行っているようにローカルに保存できます。

$('#myDiv').hover(function(){
  var self = $(this);

  self.css('background', 'red');
  // reusing example
  self.find('some').foo();
}, function(){
  var self = $(this);

  self.css('background', 'blue');
  // reusing example
  self.bar();
});

$(this)セルフでも使えます

$('#myDiv').hover(function(){
  $(this).css('background', 'red');
}, function(){
  $(this).css('background', 'blue');
});

しかし、範囲self外で宣言する(あなたの場合は不要だと思います)hover

var self = null; // declare self as global

$('#myDiv').hover(function(){
  self = $(this);
}, function(){
  self = $(this);
});
于 2012-06-15T16:36:00.787 に答える
1

ホバー関数の外側で宣言すると、両方のホバー関数で同じ self 変数を使用する可能性がありますが、self の代わりに #(this) を使用することをお勧めします。

var self = $(this);
$('#myDiv').hover(function(){

//hover over function

self.css('background', 'red');
//$(this).css('background', 'red'); //use this is better and more expressive
}, function(){

//hover out function
var self = $(this);
self.css('background', 'blue');
//$(this).css('background', 'red'); //use this is better and more expressive
});
于 2012-06-15T16:39:13.650 に答える
0

グローバル変数を使用する代わりに、jquerys データ メソッドを使用します ( http://api.jquery.com/data/ )。

設定:

$('body').data({ myVar: $(this) });

得る:

var myVar = $('body').data('myVar');
于 2012-06-15T16:38:31.753 に答える
0

jsBin デモ

関数引数内に保持されているすべての要素の背景を切り替える関数を作成できます(el)

function myFunction(el){

   $(el).hover(function(){
       $(this).css('background', 'red');
   }, function(){
       $(this).css('background', 'blue');
   });

}

関数を呼び出して、目的の要素を使用するだけではありません。

myFunction('#myDiv');

次のような目的の要素のリストを簡単に作成できます。

myFunction('#myDiv, #anotherDiv, #heading1, .classes');
于 2012-06-15T16:54:05.147 に答える