1
setInterval(function(){
    $("*").each(function(obj){
        if ($(this).data("x"))
            $(this).css({left:$(this).data("x")()});
        //... more code for y, w, h, x2, y2, etc...
    }
},25);

それは私のコンピューターで完全に実行されます - 私の心配は: 最適化せずにこのままにしておくと、このコードは、すべての DOM 要素を 1 秒間に 40 回繰り返しているため、悪いコンピューターを使用しているユーザーのパフォーマンスを大幅に低下させる可能性があるのでしょうか? それともそれは受け入れられますか?

注: ポイントは、オブジェクトの位置を調整する関数を簡単に作成できるようにすることです。たとえば$(myObj).data("x",function(){ return sin(Date.now()/1000)*50; })、オブジェクトを小刻みに動かす必要があります。

4

1 に答える 1

2

それは間違いなくパフォーマンスに影響を与える可能性があり、特に多くの要素がある場合はそうです。1秒間に40回も?それはたくさんのようです。セレクターを使用するのがどれだけ速くなるかはわかりません。それも高価になる可能性があるからです。

代わりにセレクターとして試す$("[data-x]")か、より具体的な親セレクターを使用してください。 $("#container").find('[data-x]')

于 2013-02-25T00:11:43.833 に答える