jQuery를 사용하여 이미지 소스 변경


763

내 DOM은 다음과 같습니다.

<div id="d1">
   <div class="c1">
            <a href="#"><img src="img1_on.gif"></a>
            <a href="#"><img src="img2_on.gif"></a>
   </div>
</div>

누군가가 이미지를 클릭하면 이미지 src를 이미지 번호 1 또는 2를 나타내는 <img src="imgx_off.gif">위치 로 변경하고 싶습니다 x.

이것이 가능합니까 아니면 이미지를 변경하기 위해 CSS를 사용해야합니까?


당신이 jQuery를 사용하여 무언가를 원하는 경우에 당신은 보길 원하는 것일 수도 jQuery를주기 플러그인, scrollRight 데모 (오른쪽 아래 예)
— TomHastjarjanto

43
jQuery ( "# my_image"). attr ( "src", "first.jpg")
— manish nautiyal

9
당신은 jonstjohn의 대답을 정말로 받아 들여야합니다. 그것은 대답을 받아 들일 수 있도록 질문을 향상시킬 것입니다.
— Xcelled

4
날짜까지, 즉 19th July, 2016 15:39 PM질문 공증 횟수 369 및 @jonstjohn 답변 공감 횟수 931 . 그러나 그런 나쁜 행운, @OP는 이후에 로그인하지 않았습니다 Feb 17 '09 at 2:57. :(그리고 @jonstjohn 답변은 표시되지 않은 상태로 유지 됩니다.
— Nana Partykar

@Xcelled, 유일한 문제는 jonstjohn의 대답이 질문에 대답하지 않는다는 것입니다. 사소한 점이지만 가치가 있습니다. 실제로 질문에 올바르게 대답하는 유일한 방법이므로 inco의 답변을 살펴보십시오.
— David Newcomb 2016 년

답변:


1686

jQuery의 attr () 함수를 사용할 수 있습니다 . 예를 들어 img태그의 id속성이 'my_image'인 경우 다음을 수행하십시오.

<img id="my_image" src="first.jpg"/>

그런 다음 srcjQuery를 사용하여 이미지의 이미지를 다음과 같이 변경할 수 있습니다 .

$("#my_image").attr("src","second.jpg");

이것을 click이벤트에 첨부하려면 다음과 같이 쓸 수 있습니다.

$('#my_image').on({
    'click': function(){
        $('#my_image').attr('src','second.jpg');
    }
});

이미지를 회전 시키려면 다음과 같이하십시오 :

$('img').on({
    'click': function() {
         var src = ($(this).attr('src') === 'img1_on.jpg')
            ? 'img2_on.jpg'
            : 'img1_on.jpg';
         $(this).attr('src', src);
    }
});

79

이미지 소스를 변경할 때 사람들이 흔히 저지르는 실수 중 하나는 이미지 크기를 성숙시키는 등의 후속 작업을 수행하기 위해 이미지로드를 기다리지 않는 것입니다. 이미지로드 후 작업을 수행하려면 jQuery .load()메소드를 사용해야 합니다.

$('yourimageselector').attr('src', 'newsrc').load(function(){
    this.width;   // Note: $(this).width() will not work for in memory images

});

편집 사유 : https://stackoverflow.com/a/670433/561545


예. 이것은 마침내 속임수를 썼다. .destroy ()는 충분히 멀지 않습니다. 다양한 크기의 이미지를 교체 할 때 모든 HTML을 초기화하고 다시 초기화하는 것보다 실제로 작동합니다.
— Matt J.

특히 이미지가 캐시에있는 경우로드가 안정적으로 실행되지 않습니다. jQuery 설명서를 참조하십시오.
— Twilite

19

자세한 내용은. 예를 들어 구문을 사용하여 광고 이미지에 대한 jquery에서 attr 메소드로 src 속성을 설정하려고합니다.$("#myid").attr('src', '/images/sample.gif');

이 솔루션은 유용하며 작동하지만 경로를 변경하면 이미지의 경로도 변경되고 작동하지 않습니다.

이 문제를 해결하려고했지만 아무것도 찾지 못했습니다.

해결책은 경로의 시작 부분에 '\'를 넣는 것입니다. $("#myid").attr('src', '\images/sample.gif');

이 트릭은 나에게 매우 유용하며 다른 사람들에게도 유용하기를 바랍니다.


18

jQuery 또는 기타 리소스 킬링 프레임 워크가있는 경우 (간단한 트릭을 위해 각 사용자가 매번 다운로드하는 많은 KB) 네이티브 JavaScript (!) :

<img src="img1_on.jpg" 
    onclick="this.src=this.src.match(/_on/)?'img1_off.jpg':'img1_on.jpg';">
<img src="img2_on.jpg" 
    onclick="this.src=this.src.match(/_on/)?'img2_off.jpg':'img2_on.jpg';">

이것은 일반적이고 더 우아하게 쓰여질 수 있습니다 :

<html>
<head>
<script>
function switchImg(img){
    img.src = img.src.match(/_on/) ? 
        img.src.replace(/_on/, "_off") : 
        img.src.replace(/_off/, "_on");
}
</script>
</head>
<body>
    <img src="img1_on.jpg" onclick="switchImg(this)">
    <img src="img2_on.jpg" onclick="switchImg(this)">
</body>
</html>

얼마나 많은 사람들이 질문을 읽지 못하고 요청 된 답변을 줄 수 없는지 항상 놀랍습니다. OP가 2 가지 예를 제시 한 이유는 일반적인 해결책을 찾고 있다는 것이 나에게 명백해 보였다. 그러나 다른 모든 사람들은 그것을 완전히 놓칠뿐만 아니라 질문에 대답하지 않은 대답을하는 것처럼 보였습니다. :(
— David Newcomb 2016 년

17

나는 어떻게 이미지를 변경하는 방법을 보여 드리겠습니다 src, 그래서 당신은 (당신의 당신의 HTML에있는 모든 이미지를 회전 이미지를 클릭하면 d1ID와 c1특별히 클래스) ... 당신이이 개 있는지 이상의 이미지 를 HTML의를 .

또한 문서가 준비된 후 페이지를 정리하여 처음에는 하나의 이미지 만 표시되도록하는 방법도 보여줍니다.

전체 코드

$(function() {

    var $images = $("#d1 > .c1 > a").clone();  

    var $length = $images.length;
    var $imgShow = 0;

    $("#d1 > .c1").html( $("#d1 > .c1 > a:first") );  

    $("#d1 > .c1 > a").click(function(event) { 

        $(this).children().attr("src", 
                        $("img", $images).eq(++$imgShow % $length).attr("src") );
        event.preventDefault();

    });
});

고장

  1. 이미지가 포함 된 링크의 사본을 작성하십시오 (참고 : 추가 기능을 위해 링크의 href 속성을 사용할 수도 있습니다 (예 : 각 이미지 아래에 작업 링크 표시 )).

        var $images = $("#d1 > .c1 > a").clone();  ;
  2. HTML에 몇 개의 이미지가 있는지 확인하고 어떤 이미지가 표시되는지 추적하는 변수를 만듭니다.

    var $length = $images.length;
    var $imgShow = 0;
  3. 첫 번째 이미지 만 표시되도록 문서의 HTML을 수정하십시오 . 다른 모든 이미지를 삭제하십시오.

    $("#d1 > .c1").html( $("#d1 > .c1 > a:first") ); 
  4. 이미지 링크를 클릭 할 때 처리 할 함수를 바인딩하십시오.

        $("#d1 > .c1 > a").click(function(event) { 
            $(this).children().attr("src", $("img", $images).eq(++$imgShow % $length).attr("src") );
            event.preventDefault();
        });

    위 코드의 핵심은 ++$imgShow % $length이미지가 포함 된 jQuery 객체를 순환 하는 데 사용 됩니다. ++$imgShow % $length먼저 카운터를 1 씩 늘린 다음 이미지가 몇 개인 지 그 숫자를 수정합니다. 이렇게하면 결과 인덱스 순환이에서 0까지 ( 개체 length-1의 인덱스)로 유지 $images됩니다. 즉,이 코드는 2, 3, 5, 10 또는 100 개의 이미지에서 작동합니다. 각 이미지를 순서대로 순환하고 마지막 이미지에 도달하면 첫 번째 이미지에서 다시 시작합니다.

    또한 .attr()이미지의 "src"속성을 가져오고 설정하는 데 사용됩니다. $images객체 중에서 요소를 선택하기 위해 양식을 사용하여 jQuery 컨텍스트$images 로 설정 했습니다 . 그런 다음 관심있는 특정 색인을 가진 요소 만 선택합니다.$(selector, context).eq()


3 개의 이미지가있는 jsFiddle 예제


srcs를 배열에 저장할 수도 있습니다 .
3 개의 이미지가있는 jsFiddle 예제

다음은 이미지 주위의 앵커 태그에서 href를 통합하는 방법입니다.
jsFiddle 예제


17

이것이 효과가 있기를 바랍니다.

<img id="dummyimage" src="http://dummyimage.com/450x255/" alt="" />
<button id="changeSize">Change Size</button>
$(document).ready(function() {
    var flag = 0;
    $("button#changeSize").click(function() {
        if (flag == 0) {
            $("#dummyimage").attr("src", "http://dummyimage.com/250x155/");
            flag = 1;
        } else if (flag == 1) {
            $("#dummyimage").attr("src", "http://dummyimage.com/450x255/");
            flag = 0;
        }
    });
});

이 코드 스 니펫은 문제를 해결할 수 있지만 설명을 포함하면 게시물의 품질을 향상시키는 데 실제로 도움이됩니다. 앞으로 독자들에게 질문에 대한 답변을 제공하므로 해당 사람들이 코드 제안의 이유를 모를 수도 있습니다.
— 데릭 브라운

감사합니다 Derek은 다음 번
— 부터이

14

다음과 같이 이미지 태그에 id 속성을 추가해야합니다.

<div id="d1">
   <div class="c1">
            <a href="#"><img id="img1" src="img1_on.gif"></a>
            <a href="#"><img id="img2" src="img2_on.gif"></a>
   </div>
</div>

그런 다음이 코드를 사용하여 이미지 소스를 변경할 수 있습니다.

 $(document).ready(function () {
        $("#img1").attr({ "src": "logo-ex-7.png" });
        $("#img2").attr({ "src": "logo-ex-8.png" });
    });

9

이 방법으로 jQuery를 사용하여이 작업을 수행 할 수도 있습니다.

$(".c1 img").click(function(){
     $(this).attr('src','/new/image/src.jpg');   
});

이미지 소스에 여러 상태가있는 경우 조건이있을 수 있습니다.


5
이 구문이 맞지 않습니다. jquery attr () 함수는 1 또는 2 개의 매개 변수를 사용합니다. 첫 번째는 HTML 속성 이름이있는 문자열이고 두 번째는 설정하려는 해당 속성의 값입니다.
— Thiago Silva

7

보안 문자 버튼을 호출하려고 할 때도 같은 문제가있었습니다. 일부 검색 후 이제 아래의 기능이 거의 모든 유명한 브라우저 (chrome, Firefox, IE, Edge 등)에서 제대로 작동합니다.

function recaptcha(theUrl) {
  $.get(theUrl, function(data, status){});
  $("#captcha-img").attr('src', "");
  setTimeout(function(){
       $("#captcha-img").attr('src', "captcha?"+new Date().getTime());
  }, 0);
 }

'theUrl'은 새로운 보안 문자 이미지를 렌더링하는 데 사용되며 귀하의 경우 무시할 수 있습니다. 가장 중요한 점은 FF와 IE가 이미지를 다시 렌더링하도록하는 새로운 URL을 생성하는 것입니다.


7

jQuery를 사용하여 이미지 소스 변경 click()

요소:

    <img class="letstalk btn"  src="images/chatbuble.png" />

암호:

    $(".letstalk").click(function(){
        var newsrc;
        if($(this).attr("src")=="/images/chatbuble.png")
        {
            newsrc="/images/closechat.png";
            $(this).attr("src", newsrc);
        }
        else
        {
            newsrc="/images/chatbuble.png";
            $(this).attr("src", newsrc);
        }
    });

7

이미지를 여러 번 업데이트했는데 이미지가 캐시 되어 업데이트되지 않으면 끝에 임의의 문자열을 추가하십시오.

// update image in dom
$('#target').attr('src', 'https://example.com/img.jpg?rand=' + Math.random());

1
적어도 마지막에 임의의 문자열을 추가하는 것이 매우 중요합니다! 탱크!
— Marcelo Sader

3

오늘도 똑같은 궁금증이 있습니다.

//<img src="actual.png" alt="myImage" class=myClass>
$('.myClass').attr('src','').promise().done(function() {
$(this).attr('src','img/new.png');  
});

3

이것은 바닐라 (또는 단순히 순수한) JavaScript로 수행 할 수있는 보장 된 방법입니다.

var picurl = 'pictures/apple.png';
document.getElementById("image_id").src=picurl;

1

더 작게 만들기 위해 추가하십시오.

$('#imgId').click(function(){
    $(this).attr("src",$(this).attr('src') == 'img1_on.gif' ? 'img1_off.gif':'img1_on.gif');
});

-1

CSS로 이미지 소스를 변경하는 방법은 없습니다.

가능한 유일한 방법은 Javascript 또는 jQuery 와 같은 Javascript 라이브러리를 사용하는 것 입니다.

논리-

이미지는 div 안에 있으며 해당 이미지가 class없거나 id해당 이미지가 있습니다.

따라서 논리는 div이미지가있는 내부 요소를 선택합니다 .

그런 다음 루프가있는 모든 이미지 요소를 선택하고 Javascript / jQuery를 사용하여 이미지 src를 변경하십시오 .

데모 출력이있는 예제 코드

$(document).ready(function()
{
    $("button").click(function()
    {
      $("#d1 .c1 a").each(function()
      {
          $(this).children('img').attr('src', 'https://www.gravatar.com/avatar/e56672acdbce5d9eda58a178ade59ffe');
      });
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

<div id="d1">
   <div class="c1">
            <a href="#"><img src="img1_on.gif"></a>
            <a href="#"><img src="img2_on.gif"></a>
   </div>
</div>

<button>Change The Images</button>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.