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 元素 40 次?还是可以接受?

注意:重点是更容易创建一个协调对象位置的函数,例如:$(myObj).data("x",function(){ return sin(Date.now()/1000)*50; })应该使对象摆动。

4

1 回答 1

2

它肯定会影响性能,特别是如果你有很多很多元素。也是每秒40次?这似乎很多。我不确定使用选择器会快多少,因为这也可能很昂贵。

也许尝试$("[data-x]")作为您的选择器,或者使用更具体的父选择器: $("#container").find('[data-x]')

于 2013-02-25T00:11:43.833 回答