2013-01-04 5 views
1

제품리스트가 있고 jquery가있는 각 li 요소에 li 요소의 img 속성 데이터 - 엄지에 이미지를 표시하고 싶습니다. 즉 img src의 값을 각 li 요소의 data-thumb 값으로 설정합니다. 그러나로드하는 동안 이미있는 ajax-loader.gif를 표시하려고합니다. 누군가 나를 올바른 방향으로 이끌 수 있습니까?부모 요소의 속성을 가진 img src의 값 설정

예 :

<li data-id="7" data-thumb="http://test.com/assets/pdc/thumbs/66.png" data-img="http://test.com/assets/pdc/img/66.png" data-country="Australia" data-company="Big Farm" data-app="Tea" data-brand="Big Farm" data-package="500" class="product air-500 cat7"> 
    <img class="tip" data-country="Australia" data-brand="Big Farm" src="assets/img/ajax-loader.gif"> 
</li> 

감사합니다!

답변

3

이 시도 :

// Loop through all lis with class product 
$('li.product').each(function(){ 
    // grab a reference to the current li 
    var $el = $(this); 
    // get the url from its data-thumb attribute 
    var url = $el.data('thumb'); 
    // create a new Image element to load into 
    var img = new Image(); 
    // load callback for the new image 
    img.onload = function() { 
     // find the first image inside the li 
     // and change its src to the url we just loaded 
     $el.find('img')[0].src = url; 
    } 
    // set the src of our temp Image to start loading 
    img.src = url; 
}); 

의 DOM에 추가되어 있지 않은 새로운 Image 요소를 만들고, 그것으로 당신의 URL을로드하는 코드 뒤에 아이디어. 로드 될 때 내부 <img> URL을 바꿉니다. 따라서 이미지가로드되는 동안 회 전자가 표시되어야하며 실제 이미지 (이제 브라우저의 캐시에서로드 됨)로 대체되어야합니다.

+0

일을 할 수있는 :이 일에 찬성 내 대답을 삭제합니다. – JFK

+0

와우, 완벽하게 작동 했으므로 코드를 더 잘 이해할 수 있었으면 좋겠습니까? 매우 감사합니다! – user1937021

+0

알았어, 지금은 감사합니다. 몇 가지만 더 잘 이해합니다. 엘 변수 앞에 $를 써야하는 이유는 무엇입니까? 그리고 왜이 코드 줄에서 $ el.find ('img') [0] .src = url; [0]을 포함해야합니까? 감사! – user1937021

0

당신은

$('li.product').each(function() { 
    var $this = $(this); 
    $this.find("img").attr("src", $this.data("thumb")) 
}); 
+1

... 삭제 (또는 누군가 다른 사람에게 적용되면 왼쪽) – JFK

+0

너무 고맙습니다. 감사합니다! – user1937021

관련 문제