9

私は読んでいる本からこのコードの断片を持っています。$({})そして、その意味とその使用法を正確に理解したい。

私はいくつかの検索エンジンで、さらにはSOで検索してみました。$({})検索に適した用語ではありませんでした。

    var Events = {
       bind: function(){
          if ( !this.o ) this.o = $({});
          this.o.bind.apply(this.o, arguments);
       },

       trigger: function(){
          if ( !this.o ) this.o = $({});
          this.o.trigger.apply(this.o, arguments);
       }
    };

似たような質問を見つけましたが$([])、まったく同じではないと思います。

4

2 に答える 2

15

基本的なjavascriptオブジェクトをjQueryオブジェクトとしてラップしているだけです。

jqueryのドキュメントから:

プレーンオブジェクトの操作

現在、jQueryでラップされたプレーンJavaScriptオブジェクトでサポートされている操作は、.data()、。prop()、。bind()、. unbind()、. trigger()、および.triggerHandler()のみです。プレーンオブジェクトで.data()(または.data()を必要とするメソッド)を使用すると、jQuery {randomNumber}(jQuery123456789など)というオブジェクトに新しいプロパティが作成されます。

// define a plain object
var foo = {foo:'bar', hello:'world'};

// wrap this with jQuery
var $foo = $(foo);

// test accessing property values
var test1 = $foo.prop('foo'); // bar

// test setting property values
$foo.prop('foo', 'foobar');
var test2 = $foo.prop('foo'); // foobar

// test using .data() as summarized above
$foo.data('keyName', 'someValue'); console.log($foo); // will now contain a
                                                      // jQuery{randomNumber}
                                                      // property

// test binding an event name and triggering
$foo.bind('eventName', function (){
    console.log('eventName was called');
});

$foo.trigger('eventName'); // logs 'eventName was called'

.trigger('eventName')を使用すると、オブジェクトの' eventName'プロパティが検索され、接続されているjQueryハンドラーが実行された後に実行が試行されます。プロパティが関数であるかどうかはチェックされません。この動作を回避するには、代わりに.triggerHandler('eventName')を使用する必要があります。

$foo.triggerHandler('eventName'); // also logs 'eventName was called'

これが(あまり役に立たない)例です:

​var a =$({});
a.data('b', 3);
console.log(a.data('b')); // this prints 3

オブジェクトをで作成したままにしておくと、、$({})などの呼び出し先として使用できます。これはおそらく、作成できる最小限の非DOM保持可能なjqueryオブジェクトです。databind

于 2012-09-06T16:48:22.863 に答える
1

これは実際にはjQueryよりもjavascript構文と関係があります。

{}そのようなオブジェクト用です:

 //makes an empty object
 var myObject = {}; 

 //makes an object containing 'foo' and 'bar' as 'firstItem' and 'secondItem'
 var myObject = { firstItem : foo, secondItem : bar }; 

[]次のような配列用です:

 //makes a blank array
 var myArray = [];

 //makes an array containing 'foo' and 'bar' at postions 0 and 1
 var myArray = [foo, bar];

()関数用です(jQueryは一般的に)。複数の意味を持つ可能性があるため、これは少し複雑です。

 //running an existing function
 myFunction();

 //running an anonymous function
 (function(){  
    //doSomething }
 )();

 //running a function with an argument
 myFunction(arg);

jQueryは通常、$その代わりに呼び出される関数myFunctionです...

 //runs jQuery as a function on 'arg'
 $(arg);

jQueryに渡す引数は、ほとんど何でもかまいません。これを渡すと、'#myDiv'jQueryのような文字列は、その引数をセレクターとして使用して、htmlから要素を取得します。オブジェクトや配列のような他の何かを渡す場合でも、@ dystroyが言ったように、http://api.jquery.com/jQuery/のようにそれを使っていくつかのことを行うことができます

したがって、たとえば$({})、と同じです。$(myBlankObject)

var myBlankObject = {};
$(myBlankObject);
//is the same as
$({});

var myObjectWithStuff = { firstItem :  foo, secondItem : bar };
$(myObjectWithStuff);
//is the same as
$({ firstItem :  foo, secondItem : bar });

$('selector')動作します。$({'selector'})または$(['selector'])、jQueryに文字列ではなく、別のデータ型を渡すため、そうではありません。

于 2012-09-06T17:17:10.650 に答える