Развернуть и прокрутить до скрытого элемента

#jquery

#jquery

Вопрос:

Я использую это для переключения отображения div…

 <script>
jQuery(".trigger").not('.edit .trigger').click(function(event){
event.preventDefault();
jQuery("#target").slideToggle();
});
</script>
 

Но я пытаюсь адаптировать его так, чтобы он не только расширял скрытый div, но и прокручивался до расширенного div (#target). Пока все, что я пробовал, полностью ломает его, есть идеи?

Я только что попробовал

  <script>
 $element = $('#target');
 $element.hide();
 $('.trigger').click(function(event){
 event.preventDefault();
 $a = $(this);

 $element.slideToggle(250, function(){
    $(window).scrollTop($a.offset().top);
 });
 });
</script>
 

Но я получаю $ не является функцией

Комментарии:

1. Вы должны добавить код, который вы пробовали, чтобы мы могли помочь вам исправить это

Ответ №1:

Если вы получаете сообщение об ошибке «$ не является функцией», попробуйте использовать jQuery() вместо $().

Вы должны определить переменные словом var.

Ваша функция scrollTop прокручивается до элемента .trigger, а не до цели. Это будет выглядеть так (не проверено):

  <script>
 var element = jQuery('#target');
 element.hide();
 jQuery('.trigger').click(function(event){
    event.preventDefault();

    element.slideToggle(250, function(){
       jQuery(window).scrollTop(element.offset().top);
    });
 });
</script>
 

Комментарии:

1. Большое вам спасибо за это. Это работает отлично. Единственная проблема, с которой я сталкиваюсь сейчас, — это когда открывается #target div, страница автоматически прокручивается до него, что идеально, но сейчас я пытаюсь выяснить, возможно ли снова скрыть #target div, когда кто-то прокручивает до 300 пикселей от верхней части страницы. Снова я рисую пробел… javascript не является моей сильной стороной.

2. @user2227359 Я бы сказал, взгляните на функцию jQuery(window).scroll() с помощью jQuery(this). scrollTop() для позиции прокрутки, чтобы проверить высоту прокрутки.