2013-07-09 5 views
0

토글하려는 이미지 버튼이 있습니다. 그러나 새로 고침을 한 번만 토글합니다. 이미지를 클릭하면 두 번째 그림으로 바뀌고 다음 번 클릭하면 원래 그림으로 다시 변경됩니다. 이 코드를 통해 첫 번째 사진부터 두 번째 사진을 얻을 수 있지만 다시 클릭하면 원본 사진을 다시 가져올 수 없습니다. 누군가 내가 잘못 가고있는 것을 지적 할 수 있습니까?이미지 토글 버튼은 한 번만 작동합니다.

:
<a href='#'> 
     <input type="image" src="/images/pulpit.jpg" id="btn-true" /> 
</a> 


<script type="text/javascript"> 
      $('#btn-true').click(function() { 
       if ($(this).prop("src", "/images/pulpit.jpg")) 
        $(this).prop("src", "smiley.gif"); 
       else if ($(this).prop("src", "smiley.gif")) 
        $(this).prop("src", "/images/pulpit.jpg"); 
      }); 
     </script> 
+0

당신은 사용할 수 없습니다 .toggle (function .........? –

+0

위의 코드는 w3schools 편집기에서 잘 작동하지만, .net mvc 4 웹 응용 프로그램에서이 코드를 사용할 때 아무 일도 일어나지 않습니다. 어떤 이유로 실종 될 수 있습니까? – TechnoBlahble

답변

2

귀하의 조건문

당신은 실제로 라인을 변경, 수표의 소스를 지정하고, 약간 잘못 - 이것은 내가

HTML & jQuery를 사용하고있는 전체 스크립트입니다

if ($(this).prop("src", "/images/pulpit.jpg")) 
else if ($(this).prop("src", "smiley.gif")) 

사람 : 모든

if ($(this).prop("src") == "/images/pulpit.jpg") 
else if ($(this).prop("src") == "smiley.gif") 
+0

당신이 지적한대로 조건문에서 실수를 한 것입니다. 또한 .prop 대신 .attr이어야합니다. Thanks – TechnoBlahble

0

먼저하여야한다 속성에 대해 .attr(),에 대해 .prop(), 속성에 대해을 사용하십시오. 그런 다음 출력을 비교하고 현재 시도한대로 설정하지 않아야합니다. 다음을 확인하십시오 :

$('#btn-true').click(function() { 
       if ($(this).attr("src") == "/images/pulpit.jpg") { 
        $(this).attr("src", "smiley.gif"); 
       } else if ($(this).attr("src") == "smiley.gif") { 
        $(this).attr("src", "/images/pulpit.jpg"); 
       } 
      }); 
+0

이것은 매력처럼 작동합니다! 고마워요! – TechnoBlahble

+0

이 스 니펫은 w3schools 편집기에서 제대로 작동하지만, .net mvc 4 웹 애플리케이션에서이 코드를 사용할 때 아무런 변화가 없습니다. 어떤 이유라도 제가 누락 된 부분이 있습니까? – TechnoBlahble

+0

처음에는 jQuery가 포함되어 있는지 확인하십시오. 그런 다음 콘솔에서 오류를 확인하십시오. – Eric

0

이미지 URL을 확인하고 변경하는 대신 CSS 클래스를 처리해야합니다. 예를 들어 이미지를 클릭하면이 이미지가 전환되는지 여부를 확인합니다.

if ($(this).hasClass("toggle")) 
    $(this).removeClass("toggle"); 
else 
    $(this).addClass("toggle"); 

그런 다음 CSS에 이미지 경로를 지정하십시오.

img { background-image:url(/images/pulpit.jpg); } 
img.toggle { background-image:url(smiley.gif); } 

편집 :

당신의 내용을 대체 자바 스크립트 기능

$(this).toggleClass('toggle'); 

에 의해 결과는 정확히 동일하지만 @Eric에 의해 했나요로는를 사용하는 것이 훨씬 낫다 toggleClass() 방법.

이미지를 클릭 할 때마다 "토글"CSS 클래스가 추가되지 않았 으면 추가되고, 그렇지 않으면 삭제됩니다.

그런 다음 CSS에서 관리 할 수 ​​있습니다 (위에서 설명한 두 개의 CSS 클래스를 추가하여 다른 이미지를 표시 할 수 있음).

+0

똑똑! '$ (this) .toggleClass ('toggle');'더 깨끗한 btw :-) – Eric

+0

물론 이것을 발견해 주셔서 감사합니다. – glautrou

+0

@glautrou - 예를 들어 아이디어를 설명해 주시겠습니까? – TechnoBlahble

관련 문제