Как показать div, когда нажата кнопка, а затем прокручена до нее?

Есть ли способ показать div при нажатии кнопки, а затем прокрутить до него? Я использую следующий код. Он показывает div, но мне нужно снова нажать кнопку, чтобы перейти к div. Есть ли способ заставить кнопку щелкнуть дважды?

$(document).ready(function(){
  $("div#home-btn-1").on('click', function () {

     $('div.hide-section-mobile').addClass("show");
      $('#home-btn-1').scrollTo('#funnel-1-mobile');
  });
});
Сколько исследовательских усилий ожидается от пользователей Stack Overflow? Ответ, «Много. Абсурдная сумма. Больше, чем вы думаете, на что способны. Когда вы дошли до конца своей веревки, и боль от отсутствия ответа превзошла огромное количество стыда, полученного при публикации вашего вопроса, именно тогда вы можете давай и спрашивай. Потому что к этому моменту ты проведешь все необходимое исследование, чтобы сделать этот вопрос достойным того, чтобы его задать! "
user177800 23.07.2018 21:30

Я не знаю, почему мой ответ был отклонен, но вот рабочий пример с использованием location.hashjsfiddle.net/43Ls1tnd/7

user10040839 23.07.2018 21:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
50
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Используйте location.hash = "elementID";

Заменить $('#home-btn-1').scrollTo('#funnel-1-mobile');

С location.hash = 'funnel-1-mobile';

Вот пример: http://jsfiddle.net/43Ls1tnd/7/

Почему мой ответ отвергнут, хотя он работает?

user10040839 23.07.2018 21:39

К сожалению, он не работает на мобильных устройствах: / Он показывает div при первом щелчке, но не прокручивается до него, пока я не нажму на него еще раз. Это сайт maritimeinjuryfirm.com/test445-copy. Когда я нажимаю «Получить дополнительную информацию», мне нужно, чтобы он открывал следующий div на мобильном устройстве, что он делает, а затем прокручиваю до него.

Dayan Cabrera 23.07.2018 22:03

Есть ли способ заставить кнопку щелкнуть дважды?

Dayan Cabrera 23.07.2018 22:08

Он делает и то, и другое, когда кнопка нажимается один раз. Вы пробовали мой код и мой пример выше?

user10040839 23.07.2018 22:11

Во-первых, есть привязка, которая прокручивается к элементу, поэтому вы можете удалить часть прокрутки или привязку.

user10040839 23.07.2018 22:17

Если вы хотите щелкнуть его дважды, используйте это, и он будет нажат снова после того, как вы щелкните его один раз, $(document).ready(function(){ $("div#home-btn-1").on('click', function () { $('div.hide-section-mobile').addClass("show"); $('#home-btn-1').scrollTo('#funnel-1-mobile'); $('div#home-btn-1').click(); }); });

user10040839 23.07.2018 22:18
Ответ принят как подходящий

Просто расширьте свою логику в событии щелчка при проверке, чтобы увидеть, раскрыт ли класс. Если прокрутить до него, я изменил свой код, чтобы он работал в приведенном ниже примере:

$("#home-btn").on('click', function() {
  $('#funnel-1-mobile').hasClass("show") ? console.info('Adding') : $('#funnel-1-mobile').addClass("show");
  $(window).scrollTop(1500);
});
div {
  background-color: lime;
  width: 500px;
  height: 100px;
  margin: 10px;
}

#funnel-1-mobile {
  background-color: indigo;
  color: white;
  display: none;
}

.show {
  display: block !important;
}
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id='home-btn'>Click to scroll</button>
<div></div>
<div></div>
<div></div>

<div id='funnel-1-mobile'>I scrolled!</div>

Я пробовал это, но, как и раньше, на мобильном телефоне он только показывает, он не прокручивается до него, пока я не нажму второй раз на той же кнопке. Это сайт maritimeinjuryfirm.com/test445-copy. Когда я нажимаю «Получить дополнительную информацию», мне нужно покажите следующий div на мобильном устройстве, что он и делает, а затем прокрутите до него.

Dayan Cabrera 23.07.2018 22:03

О, я вижу, вы хотите сделать и то, и другое одним щелчком. Я неправильно понял ваш вопрос

Callat 23.07.2018 22:06

Есть ли способ заставить кнопку щелкнуть дважды?

Dayan Cabrera 23.07.2018 22:08

Хм, вы могли бы просто использовать trigger('click') в другом случае. Таким образом, когда вы щелкаете по нему, когда он добавляет класс, и сразу вызывает себя, запуская прокрутку

Callat 23.07.2018 22:20

Смотрите мой обновленный ответ

Callat 23.07.2018 22:43

@DayanCabrera только что продолжил, помогло ли вам это вообще? Или у вас все еще есть проблемы?

Callat 24.07.2018 16:37

Я собираюсь попробовать прямо сейчас. Я сообщу вам результат в ближайшее время. Большое спасибо за помощь :)

Dayan Cabrera 24.07.2018 16:47

Это сработало для меня. Спасибо!

Dayan Cabrera 24.07.2018 17:13

Попробуй это

$(document).ready(function(){ 
    $("div#home-btn-1").on('click', function () { 
        $('div.hide-section-mobile').addClass("show").scrollIntoView();
    }); 
});

Другие вопросы по теме