代码之家  ›  专栏  ›  技术社区  ›  Connor Burton

我如何才能重新加载这些图像?

  •  1
  • Connor Burton  · 技术社区  · 14 年前

    我有一个简单的jquery图像变换器,当你悬停在上面的时候,它会使所有的图像与它们的灰色版本交换,除了你所在的版本,一个将保持颜色(它们都是从颜色开始的),当你悬停在另一个图像上的时候,最后一个图像变为灰色,新的图像变为颜色。

    然而,在IE上,当你在图像中徘徊时,因为它正在改变,SRCIE会在做它应该做的事情之前,显示一秒钟的彩色版本。

    代码如下:

    $(window).load(function() {
    
    //when mouse over the list item...
    $('#portfolio ul li').hover(function(){
    
      $(this).find('img').addClass('active');
    $(this).siblings().each(function(Idx){
        var imgSrc = ""+$(this).find('img').attr('src');
        var imgGS = ""+$(this).find('a').attr('rel');
    
        $(this).find('img').attr('src', imgGS);
        $(this).find('a').attr('rel', imgSrc);
    
    
        //alert (imgSrc + " " + imgGS);
    });
      //when mouse leave...
    }, function(){
    
     $(this).find('img').removeClass('active');
    $(this).siblings().each(function(Idx){
        var imgGS = $(this).find('img').attr('src');
        var imgSrc = $(this).find('a').attr('rel');
    
        $(this).find('a').attr('rel',imgGS);
        $(this).find('img').attr('src', imgSrc);
    
        //alert (imgSrc + " " + imgGS);
    });
    });
    
    //when mouse leaves the unordered list...
    $('#portfolio ul').bind('mouseleave',function(){
    
    $(this).siblings().each(function(Idx){
        var imgSrc = $(this).find('img').attr('src');
        var imgGS = $(this).find('a').attr('rel');
    
        $(this).find('img').attr('src', imgSrc);
        $(this).find('a').attr('rel',imgGS);
    
        // alert (imgSrc + " " + imgGS);
    });
    
      });
    
    });
    

    如有任何帮助,我们将不胜感激:)

    谢谢。

    3 回复  |  直到 14 年前
        1
  •  3
  •   Justin Lucas    14 年前

    尝试为此使用图像精灵。这涉及到将灰色和颜色放在同一个图像中,然后不更改源,只需更改显示图像的哪个部分。解决了浏览器必须动态加载图像的问题,因为它们已经被加载了。

        2
  •  1
  •   Robert    14 年前

    您可以将彩色图像显示为常规图像 <img> 灰色版本是CSS background . 悬停时,淡出它的兄弟姐妹img。

    类似的东西

    ​$('.yourList li').hover(function() {
        $(this).siblings().find('img').hide();
    },function() {
        $(this).siblings().find('img').show();
    });​​​​​​​​​​​​​​​
    

    只要确保你或者有内容保存它 li 或者手动设置尺寸。

        3
  •  0
  •   Ravindra Sane    14 年前

    Pixastic为迎合标准兼容的浏览器和CSS过滤器的IE应该做到这一点。不需要多个图像

    http://www.pixastic.com/lib/download/