2016-08-03 69 views
0

我试图设置链接,使用下面的URL,可以在Django应用程序中加载页面时直接跳转到相关div,例如,Django直接跳转到div

mysite.mydomain /常见问题解答#faq9-1

下面是常见问题的一个示例:

<div class="panel-group" id="faq-9"> 
    <div class="panel panel-default"> 
     <div class="panel-heading"> 
      <h4 class="panel-title"> 
       <a data-toggle="collapse" data-parent="#accordion" href="#faq9-1"> 
        9.1 FAQ Title here. 
       </a> 
      </h4> 
     </div> 
     <div id="faq9-1" class="panel-collapse collapse"> 
      <div class="panel-body"> 
       Body of FAQ here. 
      </div> 
     </div> 
    </div> 

当然,简单地加载相关的URL不执行任何操作,并更换href="#faq9-1"和/或id="faq9-1"name="faq9-1"不会改变这一点。所以,我想也许一些jQuery可能会做的伎俩:

<script type="application/javascript"> 
$(document).ready(function() { 
    var faq = window.location.href.split('#')[1]; 
    if (faq) { 
     console.log("Got FAQ: " + faq); 
     if(faq.match(/^faq/)) { 
      $('html, body').animate({ 
       scrollTop: $("#" + faq).offset().top 
      }, 2000); 
     } 
    } 
}); 
</script> 

...虽然没有,但。我甚至无法触发从控制台窗口跳转的任何内容。我也试过这个插件:

https://github.com/flesler/jquery.scrollTo

...和,试用过的插件,并从控制台上面的方法。依然没有。大概我错过了一些明显的东西,所以我欢迎任何建议。

回答

0

最终设法通过以下方式来实现此目的。首先,通过添加另一ID参数:

<a data-toggle="collapse" data-parent="#accordion" href="#faq1-2" id="faq1_2"> 

即固定移动的相关部分到顶部,但随后它需要一些JavaScript来移动从一个横幅下观察出部分,并且还以展开视图:

$(window).load(function() { 
     if (window.location.hash) { 
      var faq = window.location.href.split('#')[1]; 
      var tbody = faq.replace(/_/,'-'); 
      $('#' + tbody).addClass("in"); 
      window.scrollBy(0,-160); 
     } 

    }); 
1

我看不到所有的html,但是如果你的页面不滚动(如在页面上没有足够的信息需要滚动条),那么页面不会跳转,因为那里无处可跳。

你不应该需要jQuery来完成这个。您的代码是正确的<a href="#faq9-1"></a>和div是<div id="faq9-1">

+0

页面上有足够的常见问题解答,因此需要滚动查看较低的问题。的确,我会认为这可以在没有jQuery的情况下完成,但似乎并非如此。 – knirirr