2014-01-27 63 views
0

所以我就它的工作就好了第一頁上我試了一下:Slide Toggle JQuery不工作

http://www.uksf.net/platoon.php

但我不能讓它在頭版上運行:

http://www.uksf.net/index.php(側面的導航欄應該有一個小菜單下拉(你可以在檢查員看到))。

這裏是代碼:

 $this->con = $this->connect(); 

    $query = $this->con->prepare('SELECT * FROM SideNav WHERE type = "top" ORDER BY displayorder ASC'); 
    $query->setFetchMode(PDO::FETCH_ASSOC); 
    $query->execute(); 

    while ($row = $query->fetch()){ 
     echo'<div class="sn'.$row["id"].'">'; 
     echo'<div class="sidelink">'. 
      $row["name"].' 
      </div>'; 

     $query2 = $this->con->prepare('SELECT * FROM SideNav WHERE type = "bottom" AND parent = :id ORDER BY displayorder ASC'); 
     $query2->bindParam(':id', $row["id"]); 
     $query2->setFetchMode(PDO::FETCH_ASSOC); 
     $query2->execute(); 
     $rot = $query2->fetch(); 
     if(!empty($rot)) 
     { 
      echo'<div class="sn'.$row["id"].'group">'; 
      echo'<div class="sidelinksub">'; 

      $query2 = $this->con->prepare('SELECT * FROM SideNav WHERE type = "bottom" AND parent = :id ORDER BY displayorder ASC'); 
      $query2->bindParam(':id', $row["id"]); 
      $query2->setFetchMode(PDO::FETCH_ASSOC); 
      $query2->execute(); 
      while ($row2 = $query2->fetch()){ 
       echo'<div>'. 
       $row2["name"] 
       .'</div>'; 
      } 
      echo'</div></div>'; 
     } 
     echo'<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> 
      $(document).ready(function(){ 
       $(".sn'.$row["id"].'").click(function(){ 
       $(".sn'.$row["id"].'group").slideToggle("slow"); 
       }); 
      });</script></div>'; 
    } 

幻燈片切換不工作我已經花了幾天試圖解決這一問題,所以我還沒有來就突發奇想,幫助讚賞感謝。

+0

這可能是有幫助的:'http://www.uksf.net/js/slideShow.js 404(Not Found)' – showdev

回答

0

你撥動似乎不錯,但你有一些JS錯誤。嘗試使用開發人員工具(在Chrome上按F12)。

我建議使用一個更通用功能的toggeling。 See example

$(function(){ 
    $("div.hide").hide(); 
    $("div.menu").click(function(event){ 
     $("#" + event.target.id + "group").slideToggle("slow"); 
    }); 
}); 

這個功能有一個遞歸問題:

function slideNext($slidePos, $slides, $captions) { 
    if($slidePos != 2) { 
     $slidePos = $slidePos + 1; 
    } 
    else { 
     $slidePos = 0; 
    }; 
    $nextLeft = $slidePos * -690; 
    $slides.delay(5000).animate({left: $nextLeft}, 1000); 
    $captions.delay(5000).animate({left: $nextLeft}, 1000); 
    slideNext($slidePos, $slides, $captions); 
}; 

最後一行正在通話的次數太多。你得到Uncaught RangeError: Maximum call stack size exceeded錯誤。

,我可以看到你調用這個函數與$slidePos = 0,然後如果這不是等於2,你再將該值設置爲0。在任何情況下,你一直在呼喚的slideNext功能,無論你的狀態。這意味着你沒有停止條件。

+0

這是由其他章節在網站上工作,它是在幻燈片放映不是我的滑動切換。我的幻燈片切換仍然不會滑動 – user3211248

+0

你可以看到,當點擊它 – user3211248

+0

當然這是行不通的,劇本被套牢,你甚至點擊之前,沒有任何反應,只有當你解決了第一個問題,你就可以看看您的切換腳本起作用。順便說一句 - 你應該包括jQuery腳本只有一次,你應該寫一個更通用的函數來處理點擊,而不是每個按鈕生成功能。在更新的答案中查看我的建議 –