2014-09-12 3 views
1

jQuery를 사용하고 있습니다. 클릭시 이미지 파일의 파일 확장명을 변경하고 싶습니다. 다른 클릭으로 다시 변경하고 싶습니다. 등등.Jquery on click 이미지 파일 확장자 변경

내가 지금 가지고있는 것이지만 작동하지 않습니다. 첫 번째 클릭을해도 효과가 없습니다. 대체 구문은 와이드가 아니라고 생각합니다.

$(document).ready(function() { 

    $('img#featured').on('click', function() { 
     $(this).attr('src', replace('.jpg', '.gif')); 
    }); 

}); 

이미지 코드는 이쪽입니다.

<img src="sample-image.jpg" id="featured" /> 
+1

'replace()'기능이 없습니다. 그리고 그것이 있었다하더라도, 당신은 그것을 인수로 원래의 URL로 제공하지 않습니다. – Barmar

답변

2

정확하게 수행해야합니다.

$('img#featured').on('click', function() { 
    var src = $(this).attr('src'); 
    if (src.indexOf(".jpg") > -1) { 
     src = src.replace('.jpg','.gif'); 
    } else { 
     src = src.replace('.gif','.jpg'); 
    } 
    $(this).attr('src', src); 
}); 
+0

jsFiddle도 만들었습니다. http://jsfiddle.net/aezv7k4o/ 개발 콘솔을 열면 src가 gp에서 gif로 변경된 것을 볼 수 있습니다. –

+0

네, 잘 작동하고 있습니다. 하지만 indexOf로 정확히 무엇을 확인하고 있습니까? –

+1

'src'는 속성이며'.attr()'을 사용해야합니다. '.prop()'는 true/false 값 (예 : 'disabled')을 나타냅니다. –

1
$(document).ready(function() { 

$('img#featured').on('click', function() { 
    var $t=$(this), txt =$t.attr('src'); 
    if (txt.indexOf('.jpg')>-1) { 
    txt=txt.replace('.jpg','.png'); 
    } else { 
    txt=txt.replace('.png','.jpg'); 
    } 
    $t.attr('src', txt); 

}); 

}); 
1

당신은 .attr()에 함수를 전달할 수 있습니다. 속성의 낡은 값을 인수로서 받아, 새로운 값을 돌려 줄 필요가있다.

$('img#featured').on('click', function() { 
    $(this).attr('src', function(i, oldsrc) { 
     if (oldsrc.indexOf('.jpg') != -1) { 
      return oldsrc.replace('.jpg', '.gif')); 
     } else { 
      return oldsrc.replace('.gif', '.jpg')); 
     } 
    }); 
}); 

당신은 DOM 요소에 사물을 다른 방법과 유사한 구문을 사용할 수 있습니다 : .html(), .text(), .val(), .prop.data()을. 첫 번째 인수는 컬렉션에있는 현재 요소의 인덱스입니다 (여러 요소에서 작업하는 경우 유용 할 수 있음). 두 번째 인수는 이전 값으로 대체됩니다.

+0

첫 번째 클릭에 대해서는 작동하지만 이후 클릭에 대해서는 광고 확장을 토글하지 않습니다. –

+0

아, 그 부분을 보지 못했습니다. – Barmar