次の要件があるとします。そのような要素が存在する場合e
は id を持つ要素に要素を追加し、そうでない場合は本文に追加します。"x"
e
DOM レベル 0 では、次のように記述できます。
var parent = document.getElementById("x") || document.body;
parent.appendChild(e);
jQuery では、以下は機能しません。
var parent = $("#x") || $("body");
parent.append(e);
id を持つ要素がx
存在しない場合、最初の分離は空の jquery オブジェクトを返します。これは偽ではなく真であるため、append
は何もしません。ただし、次のように書くことができます。
var parent = $("#x")[0] || $("body")[0];
parent.appendChild(e);
ただし、jQuery オブジェクトのインデックスを作成すると HTMLElements に戻るため、このソリューションはやや扱いにくいため、appendChild
代わりにappend
. これは機能しますが、このレベルの混合が適切なのか、それとも設計が悪いことを示しているのか疑問に思っています。
使用方法があるかもしれfirst()
ませんか?おそらく、最初の要素が id x の div で、2 番目の要素が body である配列である jQuery オブジェクトを作成できます。要素配列を受け取る jQuery コンストラクター形式でこれを実行できることはわかっていますが、レベルの混合に戻ってしまいます。ID x ( ) の要素の存在を確認する方法も知っています$("#x").length
が、これが「存在する場合は ID x の要素、存在しない場合は本体」というエレガントな表現にどのようにつながるかはわかりません。
そのような定式化は存在しますか?