JQuery нажмите на самом деле нажмите два элемента один за другим - PullRequest
0 голосов
/ 04 ноября 2019

Необходимо написать JS или jQuery, чтобы при нажатии первой кнопки она прокручивалась до тега, а затем щелкала по этому тегу. Любая помощь с благодарностью. HTML ниже:


<a href="" id="reserveButton">Reserve Now</a>

<div class="spacerDiv">

</div>

<a id='secondClick' href="http://www.google.ca" target="_blank">Click here again</a>

1 Ответ

2 голосов
/ 04 ноября 2019

Используйте href="#secondClick" для автоматической прокрутки страницы, затем просто выполните click() для нужного элемента:

const EL = sel => document.querySelector(sel);
EL("#reserveButton").addEventListener('click', () => {
  // Page is already scrolled at this point since we used #hash href
  // So just perform a click...
  EL("#secondClick").click();
});
<a href="#secondClick" id="reserveButton">Reserve Now</a>
<div class="spacerDiv" style="height: 200vh;">some space... scroll down</div>
<a id='secondClick' href="https://www.google.ca" target="_blank">Click here again</a>

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener


ЕслиВы хотите использовать лучший UX (анимация), вы можете использовать JS Element.scrollIntoView()

const EL = sel => document.querySelector(sel);
const el_reserve = EL("#reserveButton");
const el_second = EL("#secondClick");

el_reserve.addEventListener('click', (evt) => {
  evt.preventDefault(); // Prevent default browser action
  el_second.scrollIntoView({behavior: "smooth"});
  el_reserve.__is_clicked = true;
});

new IntersectionObserver((entries, obs) => {
  if (el_reserve.__is_clicked && entries[0].isIntersecting) {
    el_second.click();  // Perform a click when element is in viewport
    el_reserve.__is_clicked = false; // reset
  }
}).observe(el_second);
<a href="#secondClick" id="reserveButton">Reserve Now</a>
<div class="spacerDiv" style="height: 200vh;">some space... scroll down</div>
<a id='secondClick' href="https://www.google.ca" target="_blank">Click here again</a>

jsBin живой пример

https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...