javascript - 依次单击两个元素

标签 javascript jquery

需要编写一个 JS 或 jQuery,当单击第一个按钮时,它会向下滚动到 <a>标签,然后单击 <a>标签。非常感谢任何帮助。 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>

最佳答案

使用 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 live example

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

关于javascript - 依次单击两个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58686051/

相关文章:

javascript - 速度与时间的浮点图

javascript - 禁止点击标记

javascript - 如何使用jquery获取数据属性的值

jquery验证: how to keep error messages from altering the form disposition

javascript - 设置变量以保存值始终为真

javascript - 固定大小的 div 中的图像并通过裁剪保持纵横比

javascript - jQuery 手机 : UI restyling after AJAX content loading

jQuery ui 选项卡坏了?

javascript - 使用 jquery 的小计组

javascript - JQuery循环遍历多维数组