私はapを書き直したjQueryコードを調べていました。次のコードがわかりません。
$('body > *:not(#print-modal):not(script)').clone();
私はapを書き直したjQueryコードを調べていました。次のコードがわかりません。
$('body > *:not(#print-modal):not(script)').clone();
このセレクターは、次のすべてのタグに一致します。
<body>
print-modal
、<script>
タグではありません。次に、これらすべての要素を。で複製しますが、 dオブジェクトで.clone()
は何も行われず、これは奇妙なことです。clone()
より詳細な説明:
body > *
「の直接の子孫であるすべての要素を選択する」を意味し<body>
、ワイルドカードは*
すべてのタグを選択します。次に、2つの:not()
疑似クラスフィルターは、IDを持つ要素とprint_modal
すべての<script>
タグを削除します。
参照:
私が正しければ、この場合はタグ>*
のすべての子のセレクターであり、セレクターから2つの除外を提供します。body
:not(#print-modal)
:not(script)
>
「の直接の子供」を意味します。
*
「任意のタグ」を意味します。
つまり、これは、の第1レベルの子であるタグ(ない<script>
、またはある)を見つけることを意味します。id="print-modal"
<body>
注:前に何もない場合を想定しているため、*
ここでは必要ありません。:not
*
スクリプトタグではなく、IDを持たない本体の直接の子であるすべての要素を選択しますprint-modal
。
*
jQueryセレクターでは、すべての要素を意味します。
$('body > *:not(#print-modal):not(script)').clone();
つまり、bodyのすべての直接の子要素を複製しますが、idprint-modal
を持ちscript
タグを持たない要素は複製しません。
次のように書くこともできます
$('body > *').not('#print-modal, script').clone();
参照: jQuery。