2013-06-10 1 views
0

이미지가있는 부트 스트랩 행 유체를 사용하고 있습니다. 브라우저 창의 변경시이 이미지의 크기가 변경되므로 이미지 크기가 조정될 때 트리거되는 이벤트 수신기가 있습니까? 이미지 너비를 가져 오는 데 사용하고 싶습니다.부트 스트랩 이미지의 크기가 조정되었는지 확인하는 방법

$(window).load(function() { 
    $('img.product-thumbnail').resize(function(){ 
     alert($('img.product-thumbnail').width()); 
    }); 
}); 

을 내 IMG 태그는 다음과 같습니다 : 나는 이것을 시도

<img src="img/produkt1.png" title="Názov produktu" class="product-thumbnail"> 
<img src="img/produkt2.png" title="Názov produktu" class="product-thumbnail"> 

5 이미지는 총. 지금은 알리미가 없지만 img가 크기를 변경했다는 것을 알고 있습니다 (chrome dev 도구> show dimensions). 이것을 충실히 수행 할 방법이 있습니까? (jquery가 포함되어 있으므로 선택기에 문제가 없어야합니다.)

+0

AFAIK 이미지 너비가 변경된 경우 (핸들러가 마지막으로 실행 된 이후 또는 원래 너비부터) 변경된 경우를 나타내는 일반 윈도우 크기 조정 핸들 – landons

답변

0

정말 쉬운 방법이 없습니다. jQuery resize() event은 개별 요소를 수신하는 대신 창 크기 조정 이벤트를 캡처하기위한 것입니다. 와

, 내가이 제안 할 수있는 마음과 쉬운 설명을 위해 그 : 윈도우 부하에

1) 이미지 크기를 잡아와 data- 속성으로 그들을 스틱 :

$(window).load(function() { 
    $('img.product-thumbnail').each(function(){ 
    var $this = $(this), 
     // get the image dimensions 
     thisWidth = $this.width(), 
     thisHeight = $this.height(); 

     // push them into an attribute 
     $(this).attr('data-width', thisWidth); 
     $(this).attr('data-height', thisHeight); 
    }); 
}); 

2) 창 크기 조정에 이벤트를 묶어 확인 :

$(window).resize(function(){ 
    // loop over each, checking dimensions 
    $('img.product-thumbnail').each(function(){ 
     var $this = $(this), 
      // get the image dimensions 
      thisWidth = $this.width(), 
      thisHeight = $this.height(); 

     //check that there are data-attribtues before going further 
     if($this.attr('data-height').length){ 
      if(thisWidth !== $this.attr('data-width')){ 
       //width has changed 
      } 
      if(thisHeight !== $this.attr('data-height')){ 
       //height has changed 
      } 
     } 
    } 
}); 

이 매우 빠른 검증되지 않은, 그리고 unoptimised 코드이지만 뒤에 이론이 s입니다 olid를 사용하면 이미지의 크기가 변경되었는지 여부를 감지 할 수있는 좋은 출발점이됩니다.

+0

창 크기 변경을 수신 대기하는 이벤트 리스너를 작성하려고했습니다. 그것은 효과가 있지만 그것은 윈도우 크기 (매 1 픽셀)를 변경할 때마다 이벤트가 발생하기 때문에 많은 컴퓨터 속도를 사용합니다. 50px 이벤트로 변경하면 50 번 발생하므로이를 피하고 싶습니다. 그러나 가능하지 않다면 다른 방법으로 시도해야합니다. – horin

+0

제가 언급했듯이 : 그것은 어떤 식 으로든 최적화되지 않았습니다. 당신은 그것이 매번 발사되는 것이 맞습니다. 나는 당신의 질문에서'이미지 .resize'가 기대했던 것도 가정합니다. 예를 들어 [Modernizr] (http://modernizr.com/)을 사용하여 CSS 브레이크 포인트에 묶어서 이것을 아주 쉽게 최적화 할 수 있습니다. 그리고 나서 당신이 브레이크 포인트. 그것은 여전히 ​​당신이 듣고 있고 각각의'$ (window) .resize' 이벤트를 따라한다는 사실을 피하지 못합니다. – johnkavanagh

관련 문제