0

こんにちは、j Query のプラグインをコーディングしていますが、alert() と一緒に使用すると $.now() 関数を使用する必要がありますが、問題は完全に機能しますが、コードに入れると機能しません何かを表示し、text() はプラグインでも機能しますが、唯一の問題は、関数 set interval を使用すると、次のコードが表示されることです。

setInterval(function(){

this.text($.now());

},1000); 

機能しませんが、アラートを使用すると機能するので、どうすればよいですか?

4

2 に答える 2

6

setinterval コールバック関数内では、コンテキストが失われます。このようにすることができます。

//.. some event

var $this = $(this);

setInterval(function(){
   $this.text($.now());
},1000); 

//.. code follows

または、$.proxyを使用してコンテキストを設定できます。

setInterval($.proxy(function(){
   $(this).text($.now());
},this),1000); 

または、Ecmascript 5 Function.prototype.bind (ドキュメントに記載されている shim による IE8 以下のサポートのみ)

setInterval((function(){
   $(this).text($.now());
}).bind(this),1000); 

3 つのオプションすべてを含むデモを次に示します。

于 2013-06-28T03:16:20.117 に答える
0

これは何を指していますか?これの代わりに実際のセレクターを配置することをお勧めします。関数内では、 this の値は異なる場合があります

var obj = $(".text");
setInterval(function(){
    obj.text($.now());
},1000); 

obj はここでクロージャーとして機能します

于 2013-06-28T03:17:46.763 に答える