2013-03-04 10 views
4

I, имеющий следующую JQuery, который находит высоту отзывчивым изображения:Как использовать переменную JQuery в CSS собственности

 $(document).ready(function() { //Fires when DOM is loaded 
      getImageSizes(); 
      $(window).resize(function() { //Fires when window is resized 
       getImageSizes(); 
      }); 
     }); 
     function getImageSizes() { 
      $("#slideshow img").each(function() { 
       var $height = $(this); 
       console.log($height.height()); 

      }); 

     } 

И моя цель заключается в использовании переменной $ высоты, чтобы определить высоту DIV с идентификатором слайд-шоу.

Я предполагаю, что я могу использовать это:

$('#slideshow').css({'height': $height + 'px;'}); 

Однако он не работает (не указана высота).

я включил эту строку следующим образом:

 $(document).ready(function() { //Fires when DOM is loaded 
      getImageSizes(); 
      $(window).resize(function() { //Fires when window is resized 
       getImageSizes(); 
      }); 
     }); 
     function getImageSizes() { 
      $("#slideshow img").each(function() { 
       var $height = $(this); 
       console.log($height.height()); 

       $('#slideshow').css({'height': $height + 'px;'}); 
      }); 

     } 

Есть ли что-то мне не хватает?

+0

Можно ли это увидеть в jsfiddle? – Duniyadnd

+1

Вы понимаете, что 'высота'' # слайд-шоу' будет высотой последнего изображения. Итак, если последнее изображение в '$ (" # слайдшоу img ")' height равно 10, то это будет ваша высота '# слайд-шоу'. –

+0

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

ответ

4

Вы регистрируете $height.height(), но только с использованием $height в CSS.

Если вы назвали переменные лучше, было бы проще: р

var $height = $(this).height(); 
$("#slideshow").css({"height":$height+"px"}); 

Или мои предпочтения:

document.getElementById('slideshow').style.height = this.height+"px"; 
+0

любая причина предпочтения js-версии, отличная от производительности? : O – Jashwant

+0

Я думаю, что производительность - достаточно хорошая причина. Возможно, я не был в те дни, когда 8Kb был большой памятью, но вы не знали бы этого из-за моей одержимости эффективностью! –

+0

Да, это так. Мне было просто любопытно, и я думал, могу ли я чему-нибудь научиться :) – Jashwant

1

$height - переменная jQuery. Вы должны получить его высоту, позвонив по номеру .height().

$('#slideshow').css({'height': $height.height() + 'px'}); 

Или вы можете вместо этого сохранить фактическую высоту как переменную.

var height = $(this).height(); 
$('#slideshow').css({'height': height + 'px'}); 
+0

Благодарим за помощь. Кажется, функция getImageSizes(); не срабатывает корректно при загрузке страницы. Но теперь он корректно работает с изменением размера. Консоль сообщает значение 0 при загрузке страницы. Есть идеи? –

+0

Попробуйте поместить функцию внутри функции jQuery.ready. – Bijan

1

Вы сохраняете объект JQuery $(this) для переменной $height

Сделать это: var $height = $(this).height(); и вы будете все.

+0

Благодарим за помощь. Кажется, функция getImageSizes(); не срабатывает корректно при загрузке страницы.Но теперь он корректно работает с изменением размера. Консоль сообщает значение 0 при загрузке страницы. Есть идеи? –

1

Проблема заключается в обработчике события:

 function() { 
      var $height = $(this); 
      console.log($height.height()); 

      $('#slideshow').css({'height': $height + 'px;'}); 
     } 

Вы пытаетесь сделать $height (который является объектом jQuery), объединенный с.(строка). Это заканчивается строкой '[object Object]px;', которая явно не то, что вы хотите. Вместо этого вам нужно использовать значение высоты. Это я думаю, что вы хотите:

 function() { 
      var height = $(this).height(); 
      console.log(height); 

      $('#slideshow').css({'height': height + 'px'}); 
     } 
+0

Благодарим вас за помощь. Кажется, функция getImageSizes(); не срабатывает корректно при загрузке страницы. Но теперь он корректно работает с изменением размера. Консоль сообщает значение 0 при загрузке страницы. Есть идеи? –

Смежные вопросы