2013-11-08 4 views
3

У меня свернутая боковая панель (с использованием бутстрапа), и я стараюсь, чтобы свернутый элемент прокручивался, когда он становится видимым.Смещение JQuery возвращает неправильное значение

Для этого я использую offset() jQuery, который возвращает 0 первый щелчок и возвращает правильное смещение во втором щелчке.

Вот мой код:

$.each($('[data-toggle="collapse"]'), function() { 
     $(this).on("click", function() { 
      if ($(this).is('A')) { 
       event.preventDefault(); $(this).toggleClass("active"); 
       var x = $(this).attr("href"); 
       console.log($(x).offset().top) 

      } 
     }) 
    }) 
+0

Вы можете создать пример [JsFiddle] (http://ww.jsfiddle.net) с текущей версией кода. Трудно дать рекомендацию, не видя еще кода. – AfromanJ

+2

Согласен, лучше сделать JsFiddle. Предоставьте нам как можно больше информации, чтобы помочь вам! Похоже, ваш свернутый элемент установлен на 'display: none', который не имеет значения смещения, потому что он не существует в потоке страницы. –

+0

@AdamBotley. Это ответ, я пропустил это :) спасибо. –

ответ

11

Элементы, установленные в display: none находятся вне потока страницы, то есть они не занимают места в пределах страницы. Это означает, что, пока они установлены на display: none, они не имеют значений смещения.

При первом щелчке браузер пытается найти смещение, которое равно 0, а затем показывает элемент. Как только элемент отображается, дается смещение влево/вправо.

Example Fiddle

+0

Спасибо, никогда бы не подумал об этом! –

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