7

div次のようなものがあると仮定します。

<div id="testDiv">some stuff in here</div>

オブジェクトリテラルを定義するスクリプトがあります。

var testObject = 
{
    testDiv: $("#testDiv"),
    testDivProperty: this.testDiv    
};

アクセスすると jQuery オブジェクトへの参照が取得されるのはなぜですかtestObject.testDiv。つまり、

[<div id=​"testDiv">​…​&lt;/div>​]

しかし、アクセスtestObject.testDivPropertyすると、実際の要素への参照を取得します。つまり、

<div id=​"testDiv">​…​&lt;/div>​

したがって、jQuery操作を実行できませんtestObject.testDivPropertyか?

4

6 に答える 6

1

これは機能しません。thiswindowこの文脈にあります。

var testObject = 
{
    testDiv: $("#testDiv"),
    testDivProperty: this.testDiv // window.testDiv

}
于 2013-10-02T11:51:44.507 に答える
0

実際、最初のケースでは、jQuery オブジェクトを取得することは明らかであり、理解する必要があります (' $' を使用したように)。2 番目のケースではDOM、これらの理由により、単純なノード (オブジェクト)への参照を取得します。

- jQuery をどこにも使用していないので、jQuery オブジェクトであるとは思わないでください。

- アクセスしthis.testDivた意味 - 現在のノード (アクセスされている) の "testDiv" という名前のプロパティを教えてください。<body>タグにこのコードを記述した場合は、要素this のノード/オブジェクト (DOM 内) を指す必要がありますbody。この部分についてはわかりませんが、どういうわけか、「testDiv」オブジェクトが body オブジェクトのプロパティとして登録されました (おそらく、この要素に「id」属性を使用して一意にしたためです)。したがって、 を使用してオブジェクトを取得しようとすると、DOM 内this.testDivの要素の正確なオブジェクトが取得されます。<div>また、javascript はデフォルトで DOM/javascript オブジェクト (jQuery オブジェクトではない) への簡単な参照を提供します。

これとは別に、jQuery オブジェクトは、通常の JavaScript/DOM オブジェクトを覆うコーティングと考えることができます。それは質問の一部ではありませんでしたが、それでもjQueryオブジェクトとしてアクセスしたい場合は、

ObjJavaScriptオブジェクトをjQueryオブジェクトに 変換するには、これを行いますObj=$(Obj);

newObjは jQuery オブジェクトになります。

于 2013-10-02T12:29:11.030 に答える
0

いくつか遊んだ後、答えを見つけました。2 番目のプロパティを作成するときに、thisを参照しwindowます。ここでは、 の ID を持つ div がありますtestDiv

だから、あなたは実際にこれをやっています...

var testObject = 
{
    testDiv: $("#testDiv"),
    testDivProperty: window.testDiv    
}

個人的には、これができるとは知りませんでしたがwindow.testDiv、ID を持つ DOM 要素を返しますtestDiv

于 2013-10-02T11:52:06.080 に答える
0

既に述べたように、これはグローバル ウィンドウ オブジェクトを指します。

this.testDivが DOM 要素を参照する理由は、ID を持つすべての DOM 要素にグローバル参照を追加する Web ブラウザーの標準的な動作のためです。要素が解析されると参照が追加されるため、スクリプト コードは参照する要素の下に配置する必要があります。

これらの参照に依存するかどうかは、別の議論です。

于 2013-10-02T12:14:10.860 に答える