jQuery Scroll仅在首次选择

时间:2017-05-27 23:39:15

标签: javascript php jquery mouseevent onchange

我的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>

1 个答案:

答案 0 :(得分:1)

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

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

这就是为什么它没有在第一次改变时开火。

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