4

私はこれを持っています

if(noDelay){
  $(element).find("." + options.class).remove();
} else {
  $(element).find("." + options.class).fadeOut().remove();
}

文を繰り返さないようにfadeOut()して、特定の条件が満たされた場合にのみ追加する方法はありますか?

fadeOut()チェーンの最後まで動けない。

みたいなことを考えている

$(element).find("." + options.class).(if(noDelay) fadeOut()).remove();

前もってありがとう、レオ

4

5 に答える 5

11

あなたが望むように文書化されたものは何もありませんが、おそらくこれはあなたのために働くでしょう:

$(element).find("." + options.class).fadeOut(noDelay ? 0 : 400).remove();

フェードアウトのデフォルトの期間は400ミリ秒であるため、なぜ400なのか。(ドキュメントから

于 2011-12-08T19:55:41.787 に答える
3

$.fn.each でこれを行うことができます:

$(element).find("." + options.class).each(function(){
  if (nodelay) {
    $(this).remove();
  }
  else {
    $(this).fadeOut().remove();
  }
});

ただし、すでに行っていることを単純に行うよりもはるかに効率的ではありません。

編集:これを行う別の方法があります:

$(element).find("." + options.class)[  noDelay ? "detach" : "fadeOut"  ]().remove();

基本的に、noDelay が true の場合、削除する前に要素をデタッチします。それ以外の場合は、削除する前に要素をフェードアウトします。1 行だけで、コードと同じくらい効率的である必要があります。

于 2011-12-08T19:53:51.477 に答える
2

このようなことに異議はありますか?

var $found = $(element).find("." + options.class);
if (noDelay){
  $found.remove();
} else {
  $found.fadeOut().remove();
}
于 2011-12-08T19:56:04.860 に答える
2
var els = $(element).find("." + options.class);
if (!nodelay) els.fadeOut();
els.remove();

または、恐ろしいハックを使用することもできます。

$(element).find(…)[ nodelay ? 'somenoopfunction' : 'fadeOut' ]().remove();
于 2011-12-08T19:56:11.227 に答える
1

この特定の問題:

ロジックを少し考え直して、noDelay 実際に遅延に影響を与えるようにしてください。

$(element).find("." + options.class).fadeOut(noDelay ? 0 : 'normal').remove();

必要かどうかはわかりませんremove()が。

別の質問のテストを行っていたときfadeOut()、要素を非表示にして折りたたんでいるように見えました。 remove()要素をDOMから完全に削除しますが、ドキュメントから要素を消したいだけで、ドキュメントフローへの影響を止めたい場合(ギャップがない場合)、必要かどうかはわかりません。

本当の目標:

また、jQuery をラップする予定のようです。次のようにコードをラップすることになります。

$("someElement").find(".someClass").fadeOut().remove();

...そして次のように変更します:

fadeOut("someElement", { "class" : "someClass" });

...また:

var element = new SomeClass("someElement");
element.options.class = "someClass";
element.fadeOut();

その特定の要素を何度も再利用する予定がない限り、時間を無駄にすることになると思います。jQuery には 1 回限りの操作のための非常に効率的な構文があり、一致した要素はいつでも一時変数に格納できます。

私が行方不明になっている他の目的がある場合は、この設計への侵入を許してください:)

于 2011-12-08T20:02:38.333 に答える