Javascript jQuery滚动到另一页中的某个部分

Javascript jQuery滚动到另一页中的某个部分,javascript,jquery,jquery-animate,Javascript,Jquery,Jquery Animate,我正在尝试使用jQuery库创建一个新脚本,以滚动到页面上的特定id,但我有两个问题: 我无法删除地址栏中的href内容。例如,我的链接滚动到id为锚定链接节的节块,在我的链接中我有href=“index.php#锚定链接节”。然而,在我的地址栏中,我看到了www.site.com/index.php#锚定链接部分…。我怎样才能把它脱下来 如果我已经在页面上,我的id是section scroll,我的href是href=“index.php”section scroll“,那么页面不会滚动,它

我正在尝试使用jQuery库创建一个新脚本,以滚动到页面上的特定id,但我有两个问题:

  • 我无法删除地址栏中的
    href
    内容。例如,我的链接滚动到id为
    锚定链接节的节块
    ,在我的链接中我有
    href=“index.php#锚定链接节”
    。然而,在我的地址栏中,我看到了
    www.site.com/index.php#锚定链接部分…
    。我怎样才能把它脱下来

  • 如果我已经在页面上,我的id是
    section scroll
    ,我的
    href
    href=“index.php”section scroll“
    ,那么页面不会滚动,它会重新加载,将
    www.site.com/index.php#section scroll
    放在我的地址栏中,然后滚动到我的id

  • 我正在使用jQuery3.3.1和jQueryUI1.12.0。 我使用url重写技术(例如:www.site.com/index)

    我已经尝试了以下方法:

    $(document).ready(function() {
        $('html, body').hide();
    
        if (window.location.hash) {
            setTimeout(function() {
                $('html, body').scrollTop(0).show();
                $('html, body').animate({
                    scrollTop: $(window.location.hash).offset().top
                    }, 1000)
            }, 0);
        }
        else {
            $('html, body').show();
        }
    });
    
    我没有滚动动画,我不能滚动到页面上的id,而不必修改我的地址栏

    编辑 我按照jom的建议更新了代码:

    $(document).ready(function() {
      $('html, body').hide();
    
      if $(window.location.hash'a[href$="index#lien-ancre-commu"]') {
        setTimeout.click(function (e) { 
    
          $('html, body').scrollTop(0) e.showpreventDefault(); 
    
            $('html, body').animate({
              scrollTop: $(window.locationthis.hash).offset().top
          }, 1000)
        }, 01000);
      } else {
        $('html, body').show();
      })
    });
    
    但现在我不再有滚动动画,但页面之间的切换工作

    导航菜单代码html:

    <ul class="nav navbar-nav navbar-right">
                  <li><a href="">Accueil</a>
                  </li>
                  <li><a href="/index.php#lien-ancre-commu">Communauté</a>
                  </li>
                  <li><a href="/index.php#lien-ancre-contact">Contact</a>
                  </li>
                  <li><a href="commu">Médias</a>
                  </li>
                  <li class="dropdown"><a class="fas fa-angle-down" data-toggle="dropdown">Plus</a>
                    <ul class="dropdown-menu">
                      <a href="commu">Admin</a>
                    </ul>
                  </li>
                </ul>
    
    一个简单的例子就可以了。通过这样做,您不必删除地址栏中URL的哈希部分——它永远不会附加到地址栏中

    $(document).ready(function (e) {
    
      if (window.location.hash) {
        scrollToSection(window.location.hash);
      }
    
    });
    
    $('a[href$="#lien-ancre-commu"]').click(function (e) {
      // Tells the browser not to mess with our links or anchor tags
      e.preventDefault();
    
      // Because we are redefining how it should behave...
      if (this.pathname === window.location.pathname) {
        // ...that is to scroll to a section of the page
        // IF we are on the intended page
        scrollToSection(this.hash);
      }
      else {
        // Otherwise, redirect them to the page
        window.location.replace(this.href);
      }
    });
    
    function scrollToSection(id) {
      $('html, body').animate({
        scrollTop: $(id).offset().top
      }, 1000);
    }
    
    所有这些就绪后,您将拥有以下格式的链接/锚定标签:

    <a href="/index.php#lien-ancre-commu">Scroll to section</a>
    
    
    

    请注意正斜杠字符(
    /
    ),我们需要它,因为添加它意味着我们将重定向到相对于应用程序基本路径的URL,而不是相对于当前路径的另一个路由。

    如果href是
    index.php#section scroll
    ,而不仅仅是
    #section scroll
    ,这将导致页面重新加载。如何修复此问题@Terry?对于
    中的数字1,删除地址栏中的href内容,通过“href content”您的意思是删除地址栏中URL的
    哈希部分吗?是的,我想删除URL中的id(例如www.site.com/index[#id]你真的不应该删除它。它允许用户链接到你页面的特定部分。为了更整洁的URL,你删除了熟悉的和预期的用户友好性。评论不用于扩展讨论;此对话已被删除。(你们两人都可以访问此会议室中的帖子)@jom,你能帮我吗?@BelroDe,我很乐意,但我不完全确定你为什么会得到不同的结果…或者你是如何尝试导航到页面的。我不清楚,也许可以查看我们的聊天历史记录。@jom,如果你在这个页面上:你转到导航菜单,点击名为“501 ST”的链接。页面将重新加载并滚动到“关于我们”部分。但是,如果您在带有“滚动”id的页面上,并单击501链接,则页面不会像第一个示例那样重新加载,滚动操作将直接执行,当然,在搜索栏中,基本url地址没有更改。(501eme.wixsite.com/accueil没有变成501eme.wixsite.com/accueil#id)你明白我现在想做什么吗?我在移动设备上试过了,滚动似乎对这两种情况都有效。等等,你为什么希望页面已经在同一页面上时再次重新加载?我们不应该直接滚动到该部分吗?