3

マイページには、表示するエントリがない場合に表示されるアラートボックスがあります。AJAXを介して新しいエントリが追加されたら、次の簡単な方法でこの要素を削除します。

$('#empty-alert').remove();

私は考えていました:次のエントリを追加するとき、要素が存在するかどうかに関係なく、このメソッドを再度呼び出すだけです。最初に存在を確認し、存在する場合は電話する方が良いremove()ですか?好き:

if($('#empty-alert').length){
    $('#empty-alert').remove();
}

または、要素が存在し、最初のアイデアがすでに存在を確認して1回の呼び出しで削除している場合、これは単なる余分な作業ですか?

4

4 に答える 4

9

参考までに、私の理解からかなり大まかに言えば:

jQueryの$()セレクターは、常に jQuery コレクションを返します。一致する要素がない場合、コレクションは空です。

jQuery コレクションなどで関数を呼び出すと、remove()実際にはコレクションを反復処理し、その中の各要素に対してアクションを実行します。コレクションが空の場合、決して繰り返されないためremove()、この場合、どの要素に対しても呼び出さないでください。

たとえば、次のケースを使用します。

$('#empty-alert')["#empty-alert jQuery object"]または[](空の配列)のコレクションを返します。

.remove() を呼び出すと、舞台裏で効果的に次のようなことが行われます。

//jqCollection is one of the arrays previously mentioned

jqCollection.each(function(){
    this.remove(); //'this' is a single jQuery object from the jqcollection
});
于 2012-08-10T08:07:13.433 に答える
2

または、要素が存在し、最初のアイデアがすでに存在を確認して1回の呼び出しで削除している場合、これは単なる余分な作業ですか?

存在しない要素に対してremove()を呼び出してもエラーは発生しないため、要素の存在チェックなしで使用できます。

于 2012-08-10T08:04:38.597 に答える
1

このフィドルhttp://jsfiddle.net/knFK4/1/を見ると、要素を削除するときに要素の存在を事前に確認する必要はありません。要素が欠落している場合でもエラーは発生しません

于 2012-08-10T08:03:58.350 に答える
0

ドキュメントhttp://api.jquery.com/remove/を読んでください。このチェックを行う必要がある場合は、そのことを教えてくれます。

于 2012-08-10T08:05:52.767 に答える