jQuery 滚动仅在第一个 select 之后发生

jQuery Scroll only happens after first select

我的 jQuery 有一个奇怪的问题。一旦选择了下拉选项,我有一个要切换到的元素。奇怪的是,它只会在第一次更改后触发。它不会在第一次更改时滚动到正确的元素,但之后的后续更改!

为什么忽略第一个?也许我选择了错误的事件属性?我已经尝试过其他方法,例如 mouseleave() ,但没有成功。我觉得我使用了正确的属性,因为我希望它在用户选择或更改下拉值时滚动。

如有任何帮助,我们将不胜感激。

请在下面找到我的代码:

home.php

  //SCROLL TO TRANSFER GUIDE ON click

      $("#major").on('change',function() {
        $('html, body').animate({
        scrollTop: $("#scrollHere").offset().top
      }, 1000);
      });

major.php

<?php
session_start();
require 'db_connect_clearmaze.php';
?>

<body>

<h3 align="center" class="header whitetext">Choose Your Major</h3>

<?php
  $uni = trim($_GET['uni']);
  $_SESSION['uni'] = $uni;
  $cc = $_SESSION['cc'];
?>


<form align="center">
    <select id = "major" class="dropbtn" onmouseover="DropListMajor()"
  onmouseout="this.size=1;" onchange="loadTransferGuide(this.value,'<?php echo $uni; ?>','<?php echo $cc; ?>')">
    <?php
    echo '<option value=""> Select Your Major </option>';
        $query = $db -> query("SELECT major FROM majors WHERE university = '".$uni."';");
        while($row = $query -> fetch()){
            echo '<option value = "'.$row['major'].'">' ?>
            <?php echo $row['major'].'<br>' ?> <?php '</option>';
        }

     ?>

    </select>

</form>

</body>

change 事件处理程序 $("#major").on('change',function(){...} 是在另一个 change 处理程序中定义的...

因此在第一次更改时,第一个内联处理程序定义了第二个处理程序。

这就是它没有在第一次更改时触发的原因。

我猜对了,因为它符合所描述的行为...
也因为这条评论 //SCROLL TO TRANSFER GUIDE ON click.

;)