2014-11-07 2 views
-2

문제의 코드입니다.왜 이미지의 src 속성을 변경할 수 없습니까?

$(".icon-image")[index].attr('src', '/folder/newimage.jpg'); 

위와 같이 .attr()을 사용하려고하면 정의되지 않습니다.

$(".icon-image").attr('src', '/folder/newimage.jpg'); 

그러나 내가 그렇게하면 모든 이미지 태그/클래스 이름이 동일한 이미지로 변경됩니다. 나는 싫어. 인덱스를 반복하면서 결정할 때만 이미지를 한 번에 하나씩 변경하려고합니다.

어레이의 어떤 요소를 변경해야하는지 결정할 수없는 이유는 무엇입니까?

+1

속성 값을 변경하지 않으려는 경우 속성 값을 변경하려고합니다. '.prop'를 사용하십시오. –

+1

@SterlingArcher :이 특별한 경우에는 똑같은 것이 있습니다. –

+1

@ T.J.Crowder가 답을 읽었습니다. +1 –

답변

6

[]을 사용하여 jQuery 세트에 색인을 생성하면 돌아 오는 것은 jQuery 세트가 아닌 DOM 요소입니다. 하지만 attr은 jQuery 함수이며 DOM 함수는 아닙니다.

어느 그래서 당신은 단지 하나 개의 요소를 포함하는 jQuery를 집합을 받고있어 eq을 사용하고, 사용할 수 있습니다 attr :

$(".icon-image").eq(index).attr('src', '/folder/newimage.jpg'); 

(또는 .prop('src', ...),이 특별한 경우에 같은 일에 온다.)

... 또는 []를 사용하고 결과 DOM 요소에 반영 DOM 속성 src를 사용

$(".icon-image")[index].src = '/folder/newimage.jpg'; 
2

사용 .eq() 당신이 0 기반 인덱스를 사용하는 데 사용하고, 특히, 항목의 jQuery를 수집에서 인덱스 항목을 선택하는 가장 쉬운 방법이기 때문에 - 당신은 같은 번호를 사용하는 것이

$(".icon-image").eq(0).attr('src', '/folder/newimage.jpg'); 

을 그 위의 (또는 변수) [index]에서 사용할 수 있습니다.

+2

예,하지만 *** *** ***? * 왜 *가 없는지 * 특히 * 도움이되지 않습니다. –

+0

'prop()'와'attr()'의 차이점에 유의하십시오. 비록 그것이 ''요소와'src'에 문제가 있는지 확실하지 않습니다. –

+0

넵 @DavidThomas, 나는 거의 항상 boolean에'.prop()'를 사용하고 문자열에 대해서'.attr()'를 사용한다. 그러나 예외가있다. 'prop()'의 사용은 아직도 남아있는 것들이 남아 있습니다. –

관련 문제