2012-01-06 3 views
1

私はプラグインの中で、ユーザーがドキュメントの断片かDOM文字列を渡したかどうか、あるいは実際のオブジェクトを渡したかどうかを知りたいと思います。彼らは.appendTo('body')jQueryでは、コンストラクタに渡されるドキュメントのフラグメント、文字列、またはオブジェクトがありましたか?

$('p.my_plugin').myPlugin(); 
// or 
$(object).myPlugin(); 
// vs 
$('<p>My string</p>').myPlugin(); 

に私が必要とするDOMの文字列またはドキュメントフラグメントに基本的なプラグインシェル

(function($){ 
    var methods = { 
     init : function(options) { 
      return this.each(function() { 
       console.log(this); 
       .... 
+0

'this.is( '*')'は動作するようですが、それほどテストしませんでした。 '.is( '*')'が有効であるかどうかもわかりません。 –

+1

DOM文字列とは何ですか? –

+1

そして、* document fragment *という用語を使用すると、実際には11 * documentFragment *を参照していますか?それとも何かを説明するためにその言葉を使っていますか? –

答えて

1

これはあまりにも多くのテストをしていませんが、有効かどうかはわかりませんが、this.is('*')がうまくいくようですk。

$('p.my_plugin').is('*'); // true 

$(object).is('*'); // false 

$('<p>My string</p>').is('*'); // true 
0

を渡している場合は要素が親を持っている場合、私はちょうどチェックします:

if(!this.parent().length) { 
    this.appendTo($('body')); 
} 
+0

'$({a:12})。parent()'と '$( '

My string

').parent()'はどちらも '[]'を返します。 –

+0

文字列の.parent()メソッドを呼び出そうとすると、未定義の参照エラーが発生すると思います。 – jbabey

+0

文字列の親を呼び出していないと、空のjQueryオブジェクトが返されます。 – Daff

0
if (typeof this[0] === 'object') { 
    // they passed an object 
} else { 
    // they passed something else (a string, for example) 
} 
+0

jQueryプラグインの中で、 'this'はjQueryオブジェクトです。プラグインの中で '$()'に渡されたものは不明です。その場合は –

+0

となります。この場合、this.get(0) – jbabey

+0

'this [0]'は決してオブジェクトではありません(配列が '$()'に渡されない限り(['a'、 'b'、 'c']))。 –

関連する問題