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
.
;)
我的 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
.
;)