2011-02-02 5 views
0

페이지에 올 때 자동으로 .animate로 페이지에서 벗어나는 div가 있습니다. 첫 번째 방문에서 작업했지만 사이트가 캐시되어 다시 방문하면 함수가 실행되지 않는 것처럼 보입니다. 결국 몇 번 새로 고침하면 다시 작동하지만 신뢰할 수 있어야합니다.캐시 된 사이트에서 jquery .animate 문제가 발생했습니다.

캐시 된 사이트에서 스크립트를 다시 "재설정"할 수 있어야합니다.

이것은 현재 실행중인 스크립트입니다.

$(document).ready(function(){ 

    $("#logo_fixed img").bind("load", function() { $(this).animate({"left": "+=434px"}, "slow"); }); 

}); 

IMG는 위치입니다 : 절대 내가이 일을 몇 가지 방법을 시도

는 CSS에서 페이지를 출발, 그러나 나는 또한 이미지를 필요의 문제가 전에로드되어야한다 그것은 안으로 안으로 미끄러진다. 그리고 그것이 오르는 마지막 물건 인 것을 원하지 마라. 사이트가 늘 불을 캐시 경우

는 또한,

$(document).ready(function() { 

    $('#logo_fixed img').load(function(){ 

     $(this).animate({"left": "+=434px"}, "slow") 

    }); 

}); 

같은 결과를했지만, 다시로드는 작업을 진행하게됩니다.

누구든지 도움을 받으시면 감사하겠습니다.

$(document).ready(function() { 
    $('#logo_fixed img').load(function(){ 
     $(this).animate({"left": "+=434px"}, "slow") 
    }); 
    d = new Date(); 
    $("#myimg").attr("src", $("#myimg").attr("src")+d.getTime()); 
}); 

때마다 다시로드 이미지를 강제 :

+0

이미지가로드되었는지 확인할 수 있습니까? 그렇다면 같은 애니메이션을 실행합니까? – Orbit

답변

0

, 그것은 document.ready 화재 전에 "로드"(즉,로드 이벤트가 발생합니다)입니다.

.bind 대신 $ ("# logo_fixed img"). live를 사용할 수 있습니다. document.ready 함수 밖에 코드를 넣으십시오.

var logoLoaded = false; 

$("#logo_fixed img").live("load", function() { logoLoaded = true }); 

$(document).ready(function() { 

    if(!logoLoaded){ 

     $('#logo_fixed img').load(function(){ 

      $(this).animate({"left": "+=434px"}, "slow") 

     }); 
    }  
    else 
    { 
     $('#logo_fixed img').animate({"left": "+=434px"}, "slow") 
    } 

}); 

을하지 가장 간결 코드, 그리고 아마도 약간 개선 할 수 있지만 귀하의 애니메이션 이벤트가 너무 일찍 (대기 '까지를 발생하지 않도록합니다

나는 다음을 수행 할 것 document.ready)하지만 document.ready보다 먼저 이미지 로딩을 고려합니다.