Jquery 淡入&;用动画的位置-更好的方法写这个?

Jquery 淡入&;用动画的位置-更好的方法写这个?,jquery,html,css,Jquery,Html,Css,有没有更好的方法来写以下内容 $(function(){ $('.start-here-notice').fadeIn(1000).animate({"left":"-155px"}, "slow") $('.start-here-notice').animate({"left":"-165px"}, "slow").delay(5000).fadeOut(1000); }); 它工作得很好,但我认为可能有一种更有效的方法来写这个。如

有没有更好的方法来写以下内容

$(function(){      
     $('.start-here-notice').fadeIn(1000).animate({"left":"-155px"}, "slow")  
     $('.start-here-notice').animate({"left":"-165px"}, "slow").delay(5000).fadeOut(1000);           
}); 
它工作得很好,但我认为可能有一种更有效的方法来写这个。如果是这样的话,我可能会再给它做几次动画

在这里继续学习,如有任何帮助,我们将不胜感激

谢谢

这个

$(function(){      
    $('.start-here-notice').fadeIn(1000).animate({"left":"-155px"}, "slow", function(){
        $(this).animate({"left":"-165px"}, "slow").delay(5000).fadeOut(1000);
    });
});

…我想到了。再说一次,这可能并不重要

我唯一马上想到的就是将jquery查找设置为变量

var startHereNotice = $('.start-here-notice');
startHereNotice.fadeIn(1000)...

可以在相同的动画调用中设置不透明度的动画

$('.start-here-notice').animate({"left":"-155px", "opacity":1}, "slow")
$('.start-here-notice').animate({"left":"-155px", "opacity":0}, "slow")
但请注意,ie6和ie7并不完全支持不透明度。使用阿尔法过滤器代替


编辑:好的,第二个调用,如果你想延迟去淡出,你的实现是好的。delay()是最有效的方法。

使用find函数在jQuery中定义基于类的元素是最有效的,还包括html元素类型

您目前有:

   $('.start-here-notice')
你应该考虑做这样的事情(假设开始这里是DIV)< /P> 要明确的是,如果页面上有少量到中等数量的DOM元素,并且JavaScript有限,那么几乎肯定不会注意到速度的提高。这是最有效的方法。

  • 通过链接,可以在对象上调用任意多个jQuery方法:

    $(function(){      
        $('.start-here-notice')
            .fadeIn(1000)
            .animate({"left":"-155px"}, "slow")  
            .animate({"left":"-165px"}, "slow")
            .delay(5000)
            .fadeOut(1000);           
    }); 
    
  • 按id访问元素比按类访问要快一些。(在本例中,差别很小,因为您只做了一次。)

  • 如果要再次使用同一元素,可以将
    $('.start here notice')
    的结果存储在一个变量中,以便只需查找一次。(同样,在这种情况下,性能的提高是微不足道的。当您同时多次使用jQuery对象(如处理大量元素)或频繁地(如在反复触发的事件处理程序中)时,您开始看到存储jQuery对象的好处。)


你能设置一个js提琴让我们知道动画的作用吗?jQuery很有效,但从来都不好。
$(“#parent.start here notice”)
是等效的吗?如果是这样的话,性能上的好处是从id开始递减,而不是使用
.find()
。通常省略标记名会更快(在CSS中也是如此)。这样,jQuery(或浏览器)就不必过滤结果,只包含
div
s。你忽略标记名是正确的,我错了。但是,使用$(ID类)方法在技术上比使用$(ID).find(类)方法慢,因为jQuery将第一种方法转换为后者。它基本上消除了一个函数调用。我认为组合选择器速度更快是错误的,但这不是因为jQuery,它只是让选择器在较新的浏览器中
querySelectorAll
。事实证明,在WebKit(您使用的是哪种浏览器?)中,
querySelectorAll
对普通ID进行了高度优化,但对其他选择器的搜索速度较慢。这一点可以在WebKit中得到改进。
$(function(){      
    $('.start-here-notice')
        .fadeIn(1000)
        .animate({"left":"-155px"}, "slow")  
        .animate({"left":"-165px"}, "slow")
        .delay(5000)
        .fadeOut(1000);           
});