2015-11-24 3 views
0

Прежде всего, пусть будет известно, что я полный n00b в jQuery.JQuery, переменная внутри функция не распознается действием

Во-вторых, я не могу найти какую-либо конкретную информацию по этому вопросу в любом месте, поэтому я теперь, наконец, публикую этот вопрос.

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

Вот код, который я хранится во внешнем файле и ссылки из HTML:

var adjPad = (function() { 
     var ht = $('#contactinfo').height(); 
     $('.content p:last').css({'padding-bottom':ht}); 
    }); 

    $(document).ready(function(){adjPad();}); 
    $(window).resize(function(){adjPad();}); 

Это не будет ничего делать, так как если переменная ХТ не существует.

Однако, если изменить значение «набивка дно», скажем, XYZ + «точек», код будет действительно признать, что значение и регулировать отступы соответственно.

Я так невероятно озадачен. Любая помощь будет оценена очень!

В соответствии с просьбой, здесь все соответствующие HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script src="base.js"></script> 
... 
    <div class="content"> 
     <h1>HISTORY</h1> 
     <p></p> 
    </div> 
... 
    <div id="contactinfo"> 
     <div id="contactinfocontainer"> 
     <div id="left"> 
      <ul> 
       <li></li> 
      </ul> 
     </div> 
... 
     </div> 
    </div> 
... 

Спасибо за все ответы до сих пор !!

РЕШЕННЫЙ!

Проблема заключается в совместимости между браузерами.

'margin-bottom' работает для Chrome.

'padding-bottom' Работает на Edge, Firefox и Waterfox.

Счастливое кодирование!

+0

Распечатать значение ht для консоли, что он говорит? Кроме того, вы пробовали ht + 'px' –

+0

Я запустил его код в jsFiddle, и он регистрирует правильную высоту, просто попробуйте, что @EricGuan сказал и добавил ht + 'px'. – ZachPerkitny

+1

Можете ли вы добавить соответствующий «HTML» на свой вопрос, чтобы мы могли точно увидеть, что может быть неправильным в этом случае, если ваш jQuery не соответствует правильно? –

ответ

0

Проблема заключается в совместимости между различными браузерами.

'margin-bottom' работает для Chrome.

'padding-bottom' Работает на Edge, Firefox и Waterfox.

Я надеюсь, что это поможет кому-то в будущем :)

0

Долгое время, не используя jQuery, но я думаю, высота() даст вам номер.

Так что попробуйте пройти ХТ + «точек»

Как CSS предназначен для состоять из строк.

Furtermore jQuery.height() дает разобранную высоту css, поэтому, если вы используете% в своей таблице стилей, появится ошибка. В этом случае подумайте о том, чтобы получить объект boundingbox и получить высоту оттуда.

Это должно быть, как получить BB.

$(...).getBoundingBox().height() 

JQuery синтаксический анализ CSS в строке, так что дают и проблемы с% и чувствителен к различным браузерам, а также .height() доступно только тогда, когда документ создается, а затем исчезает. BB взаимодействует доретивно с механизмом рендеринга, который преобразует% в px и упорядочивает элементы на странице. Таким образом, это все равно даст вам реальную позицию любого объекта.(В браузере):

+0

Я уже пробовал это. К сожалению, нет кубиков! Фактически, ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** Я не уверен, почему он держит меня случайным образом. Объект boundingbox ?! Спасибо за ваш ответ! –

0

JQuery высота метод возвращает высота в количестве.

var ht = $('#contactinfo').height(); //returns height in number 

Но ваше значение обивки должно быть в px так изменить код на следующую строку, и она должна работать:

$('.content p:last').css({'padding-bottom':ht+'px'}); 
+0

Все указывают, что вы действительно должны объявить, какую единицу вы запрашиваете, указав «ht + 'px''. Однако по умолчанию jQuery предполагает, что вы ссылаетесь на пиксели, так что это не ваша проблема (но все же укажите свой блок). https://jsfiddle.net/m0q0r9wy/ – jpschroeder

+0

@jpschroeder Я ищу выход%, так как высота #contactinfo равна%, и поэтому я хочу, чтобы padding-bottom также был%. –

+1

Ну, осторожно с этим. В CSS padding% основано на * ширине * элемента, а процент вашего 'p: last' будет относительным его родителем, который не совпадает с родителем' # contactinfo'. Я уверен, что вы действительно ищете значение 'px'. – jpschroeder

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