2017-06-19 6 views
0

これは話題にならないかもしれないので、私に許してください。私は非常にJS/jQueryの重い作業しているサイトを最適化しようとしています。JS - 最も効率的な実行方法

これは今私がどのように機能を起動しているかを示しています。

<a class="js-trigger" data-trigger-type="modal">Trigger a modal</a> 
<a class="js-trigger" data-trigger-type="animation">Trigger an animation</a> 
$('.js-trigger').on('click', function() { 
    var triggerType = $(this).data('trigger-type'); 
    if (triggerType === 'modal') { 
     sampleModalFunction(); 
    } 
    else if (triggerType === 'animation') { 
     sampleAnimationFunction(); 
    } 
}); 

それ複数.on('click')の機能を実行するよりも効率的であることをようだが、私は本当に私が保存しようとしているよりも多くのロード時間を引き起こしていますか?

+0

DOM操作を読み込みと保守の複雑さを犠牲にして、ロード時に保存しています。このアプローチで得られるわずかなパフォーマンスを得るには、それが価値がないと言っています。 –

+0

返信いただきありがとうございます。@ RoryMcCrossanで拡張できますか?これは、10-15の異なる機能を言うよりも、読んだり維持したりする方が難しいでしょう(このサイトはJS上で非常に重いです) –

+0

'if'と' else if'文がたくさんあります。 'if(a){b(); ... c(); } ''を意味する場合は 'if(a){b();' } c(); ' – user7929528

答えて

0
<a class="js-trigger" data-trigger-type="modal">Trigger a modal</a> 
<a class="js-trigger" data-trigger-type="animation">Trigger an animation</a> 


     $('.js-trigger').on('click', function() { 
      if ($(this).data('trigger-type') === 'modal') { 
       sampleModalFunction(); 
      } 
      else { 
       sampleAnimationFunction(); 
      } 
     }); 

また、その他の変数も使用しないでください。

ありがとう

+0

余分な変数を使用しないことを提案する理由を詳しく説明できますか? – Shelby115

+0

OPの機能を変更したのは、彼が理論的にそれらの多くを持っている 'else-if'を落とし、変数に' triggerType'をキャッシュすると、実際に彼のパフォーマンスは向上します(しかし、微視的にはなりますが)。 – Shelby115

関連する問題