2017-05-27 81 views
0

我有一個奇怪的問題,我的jQuery。一旦選擇了下拉選項,我就有一個要切換到的元素。奇怪的是,它只是在第一次改變後觸發。它不會在第一次更改時滾動到正確的元素,但在此之後進行後續更改!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

它是一種可能性,即'$( 「#大」)在( '變',函數()'是'裏面loadTransferGuide(...)' –

+0

@LouysPatriceBessette偉大的建議,但不幸的是沒有爲我工作:(一秒鐘我以爲你有東西!任何其他的想法? – Mustafa

+1

@LouysPatriceBessette只是嘗試另一個位置的文件在其他地方的功能,它完美的作品!謝謝你這麼多! – Mustafa

回答

1

change事件處理$("#major").on('change',function(){...}被內的另一個change處理程序規定...

因此,在第一次更改時,第一個內聯處理程序定義了第二個處理程序。

這就是爲什麼它沒有在第一次改變時發射。

我猜對了,因爲它符合所描述的行爲...
也因爲這個評論//SCROLL TO TRANSFER GUIDE ON click

;?)