代码之家  ›  专栏  ›  技术社区  ›  Gracie williams

单击在视口中可见的按钮

  •  1
  • Gracie williams  · 技术社区  · 6 年前

    $(document).keydown(function(e) {
      if (e.keyCode == 66) {
        //click the visible buy button in viewport , 
        $(".buy").click();
      }
    });    
    <section>
      <div class="buy">BUY</div>
      <div class="buy">SELL</div>
    </section>
    <section>
      <div class="buy ">BUY</div>
      <div class="buy ">SELL</div>
    </section>
    <section>
      <div class="buy ">BUY</div>
      <div class="buy ">SELL</div>
    </section>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    注意:有100个“购买”按钮,但在视窗中一次只显示1个“购买”按钮

    2 回复  |  直到 6 年前
        1
  •  0
  •   Hassan Sadeghi    6 年前

    如果是其他 .buy 按钮 真的看不见 ,您可以尝试:

     $(".buy:visible").click();
    

     var myVisibleSection = document.elementFromPoint(x+10, y+10);
    

    (x和y是您的 sections 与visible部分匹配,可以通过jquery获取( .offset() )或者香草js。10是父级的边框和填充的总和。)

    myVisibleSection.find(".buy").click();
    
        2
  •  0
  •   Naren Murali    6 年前

    你可以试着使用这个方便的函数,它告诉我们这个按钮在视窗中是否可见,我在这里找到了 blog . 也请制作css类 sell 这和 buy 把它卖了 div's

    $.fn.isInViewport = function() {
      var elementTop = $(this).offset().top;
      var elementBottom = elementTop + $(this).outerHeight();
      var viewportTop = $(window).scrollTop();
      var viewportBottom = viewportTop + $(window).height();
      return elementBottom > viewportTop && elementTop < viewportBottom;
    };
    $(document).keydown(function(e) {
      if (e.keyCode == 66) {
        //click the visible buy button in viewport , 
        $(".buy").each(function( index ) {
          if($(this).isInViewport()){
          console.log($(this).html() + " - " + index);
            $(this).click();
          }
        });
      }
    });
    section {
      height: 100vh;
      width: 100%;
      background-color: gray;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <section>
      <div class="buy">BUY</div>
      <div class="sell">SELL</div>
    </section>
    <section>
      <div class="buy">BUY</div>
      <div class="sell">SELL</div>
    </section>
    <section>
      <div class="buy">BUY</div>
      <div class="sell">SELL</div>
    </section>