1

私は興味がある。これ:

$('div'), this $($('div')), and this $($($('div')))... and so on

すべてがHTML要素のセレクターとして機能しているようです。なぜこれが機能するのか、そして(冗長性以外に)実際にこれを行うときに発生する問題がある場合は、誰かが知っていますか?

http://jsfiddle.net/NpT2b/

4

3 に答える 3

7

jQuery関数は、既存のjQueryオブジェクトを引数として取ることができます。これは文書化された意図的な動作です。こちらのマニュアルをご覧ください:http://api.jquery.com/jQuery/

また、HTML要素に固有のものではありません。$( $('#foo') )動作します。

私が過去に利用したこの理由の1つは、関数にセレクターまたはjQueryオブジェクトのいずれかを受け入れさせるためです。だから私は関数を書くことができました:

function excite(target) {
    $(target).append(' This is exciting!');
};

excite('.foo');これは、またはで呼び出すのが安全ですexcite( $('p:not(.exciting-already)').empty() );

于 2012-07-07T20:49:01.527 に答える
3

jQueryがjQueryオブジェクトを受け取った場合、何もする必要がないため、jQueryオブジェクトはそのまま返されます。

これは通常、jQueryオブジェクトを誤って元に戻す可能性のある悪意のあるコーダーに対処するためのものです。$()

于 2012-07-07T20:47:44.500 に答える
2

jQueryセレクターは、文字列、HTML要素、またはその他のjQueryオブジェクトのいずれかをセレクターとして受け取ります。この場合、最初の例<div>ではページ上のすべての要素を選択します。<div>2番目の例では、すべての要素のjQueryセットを再選択しています。3番目の例では、セットを再選択しています。これは、完全な冗長性以外に問題なく無期限に継続できます。

于 2012-07-07T20:47:25.980 に答える