首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jquery实现“跳转”?

问如何使用jquery实现“跳转”?
EN

Stack Overflow用户
提问于 2013-09-20 05:15:52
回答 2查看 51关注 0票数 0

我正在开发一个网站,根据用户单击的菜单图标加载不同的页面。我和一个朋友写了这个javascript函数:

代码语言:javascript
复制
function loadPage(targetURL){
    $.get( targetURL, function( data ) {
    document.getElementById("placeholder").innerHTML=data;
    window.scrollTo(0,0);
    });
}

菜单图标的编码方式如下:

代码语言:javascript
复制
<img src="images/some_icon.png" title="Some Page" onclick="javascript:loadPage('pages/somePage.php')"/>

它很好,除非尝试跳转到特定的div id。例如,

代码语言:javascript
复制
<img src="images/some_icon.png" title="Some Page" onclick="javascript:loadPage('pages/somePage#someLocationOnPage.php')"/>

去掉.scrollTo(0,0)并不能解决这个问题。我将这一行放入其中,以确保页面在更改页面时一直向上滚动(否则,如果您位于页面的中间并单击了菜单图标,则新页面将显示在页面的中间)。

我错过了什么?如何使链接跳转到div id?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-20 05:21:48

这两个URL没有什么不同。带有书签的那个只会得到相同的HTML代码。因为您没有告诉浏览器进入特定的书签,所以它应该显示相同的信息。(当然,除非您的服务器为该链接发送不同的信息)

我想您必须手动将视图移到您想要的书签上。

代码语言:javascript
复制
function loadPage(targetURL, targetID){
    $.get( targetURL, function( data ) {
        document.getElementById("placeholder").innerHTML=data;
        if(targetID && $("#"+targetID).length != 0){
            $(document).scrollTop($("#"+targetID).offset().top);
        } 
        else {
            window.scrollTo(0,0);
        }
    });
}

然后将目标的ID作为另一个参数。如果不可能,还可以在url中搜索#并找到ID/或锚点。

票数 0
EN

Stack Overflow用户

发布于 2013-09-20 05:58:46

首先,您应该将window.scrollTo(0,0)保留在代码中,以使页面在每次单击菜单项时保持在顶部。

第二,如果单击正在调用的菜单图标

代码语言:javascript
复制
 loadPage('pages/somePage#someLocationOnPage.php')

您的意图是打开'somePage‘并滚动到元素id为'someLocationOnPage.php’的位置,然后您应该更新您的loadPage方法,以检查'#‘之后的部分。

代码语言:javascript
复制
function loadPage(targetURL){
    $.get( targetURL, function( data ) {
      document.getElementById("placeholder").innerHTML=data;
      window.scrollTo(0,0);

      // Grab url part after '#'
      var name = targetURL.substr( href.indexOf('#') + 1 ), target = $('a[name='+ name +']'), target2 = $('#' + name);

      // Determine of bookmark is available or not
      target = (target.length)? target : target2;

      // Scroll to the bookmark
       $('html,body').animate({
          scrollTop: target.offset().top
       },400);
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18909291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档