Javascript 如何优化jQuery代码?

Javascript 如何优化jQuery代码?,javascript,jquery,optimization,Javascript,Jquery,Optimization,我有一些实验脚本,当列表元素悬停时,可以制作ul列表元素背景位置的动画。 是否有其他方法来管理此任务?或者只是优化这个代码 作为基本的优化代码,我只能在第一个函数部分调用“css()”方法的地方重新定位jQuery语句 希望能有帮助 作为基本的优化代码,我只能在第一个函数部分调用“css()”方法的地方重新定位jQuery语句 希望有帮助。悬停时将背景更改为gif。您将获得最佳性能。悬停时将背景更改为gif。您将获得最佳性能。优化40毫秒计时器间隔的最佳方法是不要在其中调用昂贵的jQuery函

我有一些实验脚本,当列表元素悬停时,可以制作ul列表元素背景位置的动画。 是否有其他方法来管理此任务?或者只是优化这个代码

作为基本的优化代码,我只能在第一个函数部分调用“
css()
”方法的地方重新定位jQuery语句

希望能有帮助

作为基本的优化代码,我只能在第一个函数部分调用“
css()
”方法的地方重新定位jQuery语句


希望有帮助。

悬停时将背景更改为gif。您将获得最佳性能。

悬停时将背景更改为gif。您将获得最佳性能。

优化40毫秒计时器间隔的最佳方法是不要在其中调用昂贵的jQuery函数。将对
$('.animate')
的调用存储在interval函数之外的变量中,然后像普通数组一样使用
for
对其进行循环,并使用标准DOM属性更改每个元素的样式。这就是它的要点,我添加了一些代码重组,使事情变得更简单

var c = 0,
    ids;

$(function(){
    $("li.animate").hover(function () {
        ids = setInterval(function() {
            $('.animate').css('backgroundPosition', ((++c==4) && (c=0), (-100 * c) + 'px 0'));
        }, 40);
      }, function () {
          $('.animate').css('backgroundPosition', '0 0');
          clearInterval(ids);
      }
    );
});
var c = 0, ids;
$(document).ready(function(){
  $("li.animate").hover(function () {
    var ani = $('.animate'), l = ani.length;

    ids = setInterval(function() {
      var i, param;
      if ( c >= 5 ) {
        c = 1;
        param = '0 0';
      } else {
        param = (-100 * c++) + 'px 0';
      }

      for (i=0; i<l; i++) {
        ani[i].style.backgroundPosition = param;
      }
    }, 40);

  }, 
  function () {
    $('.animate').css('backgroundPosition', '0 0');
    clearInterval(ids);
  }
);});
var c=0,id;
$(文档).ready(函数(){
$(“li.animate”).hover(函数(){
var ani=$('.animate'),l=ani.length;
ids=setInterval(函数(){
变量i,参数;
如果(c>=5){
c=1;
参数='0';
}否则{
参数=(-100*c++)+‘px 0’;
}

对于(i=0;i优化40毫秒计时器间隔的最佳方法是不要在其中调用昂贵的jQuery函数。将调用存储到
$('.animate'))
在区间函数外的变量中,然后像普通数组一样使用
for
循环遍历它,并使用标准DOM属性更改每个元素的样式。这就是它的要点,我添加了一些代码重组,使事情变得更简单

var c = 0, ids;
$(document).ready(function(){
  $("li.animate").hover(function () {
    var ani = $('.animate'), l = ani.length;

    ids = setInterval(function() {
      var i, param;
      if ( c >= 5 ) {
        c = 1;
        param = '0 0';
      } else {
        param = (-100 * c++) + 'px 0';
      }

      for (i=0; i<l; i++) {
        ani[i].style.backgroundPosition = param;
      }
    }, 40);

  }, 
  function () {
    $('.animate').css('backgroundPosition', '0 0');
    clearInterval(ids);
  }
);});
var c=0,id;
$(文档).ready(函数(){
$(“li.animate”).hover(函数(){
var ani=$('.animate'),l=ani.length;
ids=setInterval(函数(){
变量i,参数;
如果(c>=5){
c=1;
参数='0';
}否则{
参数=(-100*c++)+‘px 0’;
}

对于(i=0;我认为最好的优化是使用CSS动画,这在一些浏览器中使用硬件加速。您介意它在所有浏览器中都不起作用吗?为了更好的结果,请考虑在这里张贴:我将检查CSS动画…但是,我有跨浏览器兼容性:)谢谢你的推荐,我能想到的最好的优化是使用CSS动画,在一些浏览器中使用硬件加速。你介意它在所有浏览器中都不起作用吗?为了更好的结果,考虑在这里张贴:我将检查CSS动画…但是,我有跨浏览器兼容性:感谢您的推荐伟大的运算符优先用法!伟大的运算符优先用法!