私はこのような質問をしばしば見るが、複数の解決策がある。私は再利用可能な短いものを考え出しています。私の質問は、次のコードではclearTimeout()
にする必要がありますか?そして、あなたが改善するものは何ですか?パフォーマンスのためにこのコードがどれくらい良いか悪いのですか?
http://jsfiddle.net/elclanrs/fQX8M/15/次々に要素を表示する
var fade1by1 = function ($elms, props) {
props = props || {};
props.delay = props.delay || 1; // s
props.speed = props.speed || 400; // ms
props.ease = props.ease || 'linear';
for (var i=0, d=0, l=$elms.length; i<l; i++, d+=props.delay*1000) {
(function (i, d) {
// Using `delay()` instead of `setTimeout()`
// as Alexander suggested
$elms.eq(i).delay(d).fadeIn(props.speed, props.ease);
})(i, d);
}
};
実際にはとてもクールです。機能を追加する場合は、「遅い」の代わりに個々のフェード速度を設定するパラメータを追加し、フォールバックとして「遅い」または200を使用します。 –
ああ、私は結局これからプラグインを作りますが、私はちょうど最も単純なケースが改善できるかどうかを見たいと思っています。それから私はカスタマイズに入るでしょう。ほとんどの場合、この場合には 'clearTimout()'が本当に必要かどうかを知りたいのですが... – elclanrs
タイマーが無期限に実行されていれば、clearTimeout()が必要になるでしょう。この場合、指定された数の要素に対してのみ実行されるので、明確にする必要はありません。もちろん、停止ボタンを追加して、次の要素をいつでも停止させない限りは、 ind_speedを使った簡単なバージョンもあります(自分で持っているわけではありませんが、私はそれを見たいと思っていました:p http://jsfiddle.net/fQX8M/7/ –