2014-10-22 2 views
0

성능에 대한 질문이 있습니까?성능에 대한 질문 jQuery

두 이미지를 HTML로 작성하고 숨겨진 이미지 하나를 표시하고 jQuery로 둘 다 표시하도록 변경하십시오 (표시된 이미지를 숨기고 숨겨진 이미지 표시).

<img id="1" style="display:none;" src="img1.png" /> 
<img id="2" src="img2.png" /> 
$('#1').onclick(function(){ 
    $(this).css('display', 'none'); 
    $("#2").css('display', 'inline-block'); 
}); 
$('#2').onclick(function(){ 
    $(this).css('display', 'none'); 
    $("#1").css('display', 'inline-block'); 
}); 

또는 이미지의 src를 변경하는 것이 더 좋습니까?

$('#1').onclick(function(){ 
    if ($(this).attr('src') == 'img1.png') 
    $(this).attr('src', 'img2.png'); 
    else 
    $(this).attr('src', 'img1.png'); 
}); 

대단히 감사합니다.

+0

한 성능 문제는 jQuery를가'onclick' 방법은 – charlietfl

답변

0

사용자가 클릭하지 않으면 이미지 요청이 요청에 따라 이루어 지므로 불필요한 요청을 저장하므로 더 나은 접근 방법입니다.

그러나 이미지를 클릭하여 여러 번 변경해야하는 경우 많은 수의 이 필요합니다. 개의 요청이 있습니다.

대안이 될 것이다는

var $img1 = $('<img>', { 
    src: 'img1.png' 
}); 
var $img2 = $('<img>', { 
    src: 'img2.png' 
}); 


$('#1').click(function(){ 
    if ($(this).attr('src') == 'img1.png') 
    $(this).html($img2); 
    else 
    $(this).html($img1); 
}); 
+1

대부분의 최신 브라우저가 두 가지를 캐시합니다없는 것이다 클릭을 기반으로 DOM과 스왑에이 개 이미지를 만드는 것입니다 그래서'src'를 뒤집을 때 최대 두 개의 요청을 얻을 것입니다. 이 방법의 단점은 두 번째 이미지를로드하는 데 시간이 걸릴 수 있으며 클릭 즉시 사용할 수 없을 수도 있다는 것입니다. 그러므로 OP 질문에 대한 대답은 당신이 선호하는 트레이드 오프에 달려 있습니다. – dave

+1

또는 스프라이트/배경 이미지를 사용하고 두 번째 이미지를 표시하기 위해 위치를 조정하면됩니다. 아마 가장 빠를거야. – wwwmarty

관련 문제