2012-03-30 5 views
3

これは、create()のようなウィジェットメソッドの中で、これは何を意味しますか?事前にこのようなウィジェットを持つ例えば

$.widget("sample.CustomWidget", { 
options:{ 
}, 
_create: function(){ 
// Here what do this and $(this) mean 
} 
}); 

おかげで、

-Raja。

+0

"ウィジェット"とは具体的にはどういう意味ですか? jQueryUIのウィジェットファクトリを使用しているプラ​​グインか、通常のプラグインですか? –

+0

'this'は関数のコンテキストを参照します。 RTFM:https://developer.mozilla.org/en/JavaScript/Reference/Operators/this – Bergi

答えて

5

これは、基本的にはとにかく... _CREATEメソッドの呼び出し元に依存します。

  • this

  • $(this)は、上記の目的は、jQueryのに包まれている機能の「所有者」を指し、オブジェクト

も参照してください。

http://www.quirksmode.org/js/this.html

http://www.bennadel.com/blog/1838-Wrapping-The-Window-Object-In-A-jQuery-Wrapper.htm

+2

一般的にはそうですが、ウィジェットの文脈では、 "this"はラッパーとは対照的にJQueryウィジェット自体です。 – mattytommo

+0

@mattytommo、正確な説明を教えてもらえますか –

+0

基本的には、自分で_createメソッドを呼び出さない限り、JQueryがあなたにそれをさせている限り、 "this"は常にウィジェットになりますオブジェクトをデバッグしようとすると、this.widgetName、this.widgetEventPrefixなどを実行できます.jQueryオブジェクトにラップされると、もはやjQueryウィジェットオブジェクトではなく、汎用のjQueryオブジェクトになります。ウィジェットオブジェクトのプロパティ(widgetNameなど): – mattytommo

1

"this"は実際のJQueryウィジェットオブジェクトで、widgetName、widgetEventPrefixなどのようなものをクエリできますが、 "$(this)"は "this"のJQueryオブジェクトです。を使用してウィジェットのプロパティを取得することはできません。

+0

投稿されたソースから、_create関数が持つ呼び出し元のタイプを知ることができないので、thisと$(this)は同じ... – mamoo

+0

それは私的な機能ですか?外部発信者から_createを呼び出すことはできません。 – mattytommo

+0

Rajaのコードは、その工場を参照することができます:http://ajpiano.com/widgetfactory/ ...とにかく、あなたは、イベントコールバックとして呼び出されないことを仮定することはできません(そして、この場合、 'これは潜在的に何でも)、その内部には他の機能はありません。だから、基本的には、これらのステートメントがどこに置かれているかによっても変わります; – mamoo

3

標準のjQuery UIスタイルのウィジェットのイベントハンドラの中で、thisは、イベントに関連するDOM要素を参照する、$(this)this周りjQueryのラッパーを作成し、DOM要素(再び)はthisとして利用可能です。

しかし、あなたのウィジェットファンクションが呼び出されたとき、通常thisは、特定のDOMエレメントではなく、そのファンクションが呼び出されたjQueryオブジェクトを参照します。そのjQueryオブジェクト内の一致する要素のセットを操作します。

2

のjQueryと統合方法において:

$.fn.yourFunction = function() { 
    // ... 
}; 
this

の値はjQueryオブジェクト自体です。したがって、thisを別のjQuery呼び出しでラップする理由はありませんが、怪我はしません。イベントハンドラへのコールバックで

$('#myButton').click(function() { 
    // ... 
}); 

thisの値は、イベントのターゲットDOM要素、またはイベントが実際のDOM以外の何かにトリガされた場合、ターゲットオブジェクトがあります。

たとえば、.each()のような他のjQueryコールバック状況では、thisという値は、一般にjQueryオブジェクトの性質によって決まります。

すべてのことの結論が集積して、jQueryの機能(最初のサンプル)の内側に、あなたは一般的にjQueryのに別の呼び出しではないラップthisを行うということです。それはすでにjQueryオブジェクトです。それ以外の場合は、thisをjQuery機能と併用する場合は、を実行してとする必要があります。

1

これは、あなたがいるコンストラクタを表します。たとえば、クリックイベントでは、関数のコンストラクタである関数内でクリックされたdom要素。

function test{ 
    this.b = "hello jupiter"; 
} 
var a = new test(); 
alert(a.b); 

実質的に$(これ)に特別なものはありません。 $と呼ばれる関数があり、アラートのように "this"はパラメータです。

$(this); 
//just like 
alert("some string); 
関連する問題