2015-09-26 3 views
3

У меня проблема с jQuery. Не могу понять, как это сделать. У меня есть несколько секций шириной различной высоты:Изменение размера элементов элементов при изменении размера окна

<section id="1" class="something" style="height:111px; background:red;">1</section> 
<section id="2" class="something" style="height:222px; background:blue;">2</section> 
<section id="3" class="something" style="height:333px; background:green;">3</section> 

Мой JQuery весы высоту каждой секции, когда окно меньше, чем 500px:

var org_height = $('.something').height(); 

$(window).resize(function() { 

    $(".something").each(function() { 

     var win = $(window).width(); 
     var height = $('.something').height(); 

     if(win < 500) { 
      y = 500 - win; 
      $('.something').css("height",org_height-y/3+"px"); 
     } 
     else { 
      $('.something').css("height",org_height+"px"); 
     } 
    }); 

}); 

JSFiddle: https://jsfiddle.net/owtz31jj/

Как я могу хранить первоначальную высоту каждой секции и масштабировать их в зависимости от каждой высоты и обратно до первоначальной высоты. Я очень благодарен за любую помощь.

ответ

2

Вы можете использовать jQuey.fn.data:

// Store original height for each .something 
$(".something").each(function() { 
    $(this).data('org_height', $(this).height()); 
}); 
$(window).on('resize', function() { 
    var win = $(window).width(); 
    $(".something").each(function() { 
     // Get the value storred in org_height using jQuery.fn.data 
     var org_height = $(this).data('org_height'); 
     if(win < 500) { 
      var y = 500 - win; 
      $(this).css("height", org_height - y/3); 
     } 
     else { 
      $(this).css("height", org_height); 
     } 
    }); 
}); 
+0

Это было быстро. Большое вам спасибо, он отлично работает. – user5379464

+0

Нет проблем. Вы видите, как вы можете использовать '$ (this)' внутри каждой функции? Это гарантирует, что вы получите org_height из соответствующего элемента. – andlrc

+0

Да, мне нравится jQuery больше и больше;) – user5379464