2013-05-05 287 views
-1

由於css屬性,我滾動到div標籤的margin-top太多。所以我認爲jquery是解決這個問題的最佳解決方案。使用jquery滾動到div ID

我不知道爲什麼這不起作用,我對Js和Jquery很新。任何幫助我們不勝感激。

下面是對Js的簡要介紹。我發現,當你的DIV ID在容器的(「HTML,身體」)更改爲('集裝箱)

Here is my jsfiddle

 jQuery(document).ready(function($){ 
var prevScrollTop = 0; 
var $scrollDiv = jQuery('div#container'); 
var $currentDiv = $scrollDiv.children('div:first-child'); 

var $sectionid = 1; 
var $numsections = 5; 

$scrollDiv.scroll(function(eventObj) 
{ 
    var curScrollTop = $scrollDiv.scrollTop(); 
    if (prevScrollTop < curScrollTop) 
    { 
    // Scrolling down: 
     if ($sectionid+1 > $numsections) { 
      console.log("End Panel Reached"); 
     } 
     else { 
      $currentDiv = $currentDiv.next().scrollTo(); 
      console.log("down"); 
      console.log($currentDiv); 
      $sectionid=$sectionid+1; 
      console.log($currentDiv.attr('id')); 
      var divid =$currentDiv.attr('id'); 
      jQuery('#container').animate({scrollTop:jQuery('#'+divid).position().top}, 'slow'); 
      } 
    } 
    else if (prevScrollTop > curScrollTop) 
    { 
    // Scrolling up: 
     if ($sectionid-1 == 0) { 
      console.log("Top Panel Reached"); 
     } 
     else { 
      $currentDiv = $currentDiv.prev().scrollTo(); 
      console.log("up"); 
      console.log($currentDiv); 
      $sectionid=$sectionid-1; 
      var divid =$currentDiv.attr('id'); 
      jQuery('html, body').animate({scrollTop:jQuery('#'+divid).position().top}, 'slow'); 

      } 
    } 
    prevScrollTop = curScrollTop; 
}); 
}); 
+0

檢查:http://stackoverflow.com/questions/6677035/jquery-scroll-to-element – 2013-05-05 13:09:31

+0

請減磅你的代碼提交的相關部分,這將有助於人們試圖回答你的問題。 – 2013-05-05 13:11:43

回答

2

我不完全知道你想要什麼,但滾動到使用jQuery的<div>比你的代碼更簡單。

例如這個碼替換錨的自動跳躍行爲與平滑滾動:

var top = $($this.attr('href')).offset().top - 10; 

I:

$(document).ready(function(e){ 
    $('.side-nav').on('click', 'a', function (e) { 
     var $this = $(this); 
     var top = $($this.attr('href')).offset().top; 

     $('html, body').stop().animate({ 
      scrollTop: top 
     }, 'slow'); 

     e.preventDefault(); 
    }); 
}); 

當然,你可以通過添加或從中去除隨意調節top可變也從它的小提琴(在您的HTML上):http://jsfiddle.net/Qn5hG/8/

如果這不能幫助你或你的問題是不同的,請澄清!


編輯

與提琴問題:

  • jQuery的不被引用
  • 如果jQuery框架與 「的onLoad」 選擇你不需要jQuery(document).ready()。刪除JavaScript的第一行和最後一行。
  • 您的HTML中沒有div#container,因此無法檢查它在哪裏滾動。滾動事件永遠不會觸發它。
  • 您的HTML無效。最後有很多未封閉的元素和隨機標籤。確保它是有效的。
  • 很難弄清楚你的小提琴應該做什麼。
+0

,工作得很好。我現在正在與偏移玩弄,我還有一些項目關閉。非常感謝! – nil 2013-05-05 15:15:36

+0

@Russell,爲什麼不接受?這個答案是否有新問題使其無效? – SoonDead 2015-07-07 15:29:28