2012-04-09 29 views
2

私はfadeToをたくさん使用するつもりだとして、容易さのためにこの機能を使用しています:Jquery |同じ機能の中の機能。それは悪い練習ですか?

function fade_to(div, speed, opacity, after_fade) { 
    $(div).fadeTo(speed, opacity, after_fade); 
} 

は、その後、私はafter_fadeパラメータに同じ関数を呼び出しています:

fade_to('#div', 3000, 1, function() { fade_to('#another_div', 3000, 1)}); 

はその悪いことです何をする?スピード/スムーズさに問題はありますか? jQueryのデフォルトのfadeTo関数を使用する方が良いですか?

ありがとうございます!

+2

あなたは何を得ますか? – zetlen

+0

は少し無意味なようです – nodrog

+2

それと何も間違っていない、パフォーマンスは同じですが、私は利益が表示されません。常に同じであるいくつかのパラメータをスキップしたり、おそらく$( '#' + div)を使用して要素のIDを渡すだけなら、より有益なものにすることができます – ericosg

答えて

4

あなたの方法で行うことはできません。さらに、jQuery fadeTo関数を使用しています。あなたがしたことに何も間違いはありません。ただの利益はありません。たとえば、あなたのカスタム関数に以下の引数を持っていた場合は、そのような技術を用いて作業を保存することができます:

function fade_to(div, after_fade) { 
    $(div).fadeTo(3000, 1, after_fade); 
} 

fade_to('#div', function(){ fade_to('#another_div', $.noop); }); 

これは実際にはスピードと不透明度の引数を入力することからあなたを防ぐことによって働く節約になります。また、それ以外の場合は、単にそれをjQueryの道

$('#div').fadeTo(3000, 1, function(){ $('#another_div').fadeTo(3000, 1); }); 
の書き込みしない理由はありませんそして、あなたは

var fade_to_foo = Fade_to(3000, 1); 
fade_to_foo('#div', function(){ fade_to_foo('#another_div'); }); 

のような場での引数の保存機能を作ることができ、この

function Fade_to(speed, opacity){ 
    return function(div, callback){ 
      $(div).fadeTo(speed, opacity, callback); 
    } 
} 

ようにそれをカレーでした

+0

+1私はこの答えが気に入っていますが、一部のパラメータまたはすべてのパラメータのデフォルトを設定しておきます。ダックタイピングが必要な場合もありますが、実際にコードを減らすことができます。例えば、 '$ .noop'を関数に入れ、' after_fade || $ .noop'。 –

+0

はい、これは本当です。 – Fresheyeball

+0

...ああ、私はあなたがカリングする例で更新されて参照してください。それは別の良い考えです。 –

1

あなたのアプローチは便利です。私はそれがフェード効果を遅くするのではないかと疑う。私の考えでは、このアプローチには何も問題はありません。フェードする前にフェード効果を脈打ったり点滅させたりすることに決めた場合は、瞬き/点滅するように機能を変更するだけで、フェードするすべてのコールをフェードして新しいルーチンを実行する必要があります。この場合、コードを減らして保守性を向上させるので意味があります。 Ericosgは有効な点を作っていますが、パラメタを同じにしようとすると、パラメタを減らさないのはなぜですか。

5

あなたの関数が呼び出されるすべてのインスタンスにそれを適用せずにそれ以上の修飾子を使用することはできないので、悪い習慣です。 jQueryで修飾子を連鎖させることができるので、大部分は有用な機能であることに同意します。このコード本体で作業している人や他の誰にとっても便利な機能は無効にしています。

追加のアニメーションやスタイリングを追加したい場合は、今度は通常のjQueryを通してオブジェクトを再度選択する必要があります。余分な仕事、余分なコール、本当の利益。

+0

+1 jQueryチェーンについての素晴らしい点。 –

+0

'return'文がそれを処理します。 –

1

この方法は、連鎖可能な短い構文のライブラリとしてjQueryを使用するという目標に反するものです。ただし、この特定の機能がプロジェクトに役立つ場合は、効果的です。

1

マイク、

それは私があなたの状況を知っていないことを考えると、簡単に使いやすさや何か(いないことを確認を提供するかもしれないと私は、これは必ずしも行うための「悪い」ものであることを知りません例えば、APIで与えられた標準関数を使用すると、そうでなければ、そうではないでしょう。

実際には、関数呼び出し自体は、「再帰」と呼ばれるCSのアイデアを使用しています。これは、ツリーをトラバースするのに役立ちます(再帰とgoogleの両方で、私がここで言及していること)、またはある種の数学的演算(すなわち、ユークリッドアルゴリズム)を実行する。

あなたがこれをやっているなら、「なぜ」と尋ねるのがいいでしょう。あなたは、余分な時間をパラメータを渡しているので、スピードの面で何も得られませんし、あなたの関数はAPIの実装(少なくとも私が見ているもの)に比べて何も追加を達成していません。あなたがこれから習慣を作ろうとしていたら... 計算上課税関数...あなたは減速に気付くかもしれません。

私はここであなたの質問に答えてくれることを望んでいますが、なぜこれを行うのが一般的に悪いのかについてのさらなる洞察を与えることを望んでいます。私はdunsmoreb、Thomasdotnetにも同意します。良い点!

1

-sf

ちょうどjQueryのデフォルトfadeToの機能を使用することをお勧めします。ただこれ。

関連する問題