2013-02-25 61 views
0

这里是我的代码:不是以#工作jQuery的具体内容加载链接

http://jsfiddle.net/h3ctt/

如果您导航到www.example.com/page.html#example-name1而不必加载页面首先它会显示整个页面,而不是所请求的内容。

但是,如果您在页面加载后导航到链接,它将起作用并显示所需的内容。

这很奇怪。有没有人有解决这个问题?

+0

你需要运行在页面加载代码以及对哈希变化,但是也可以考虑到一些浏览器触发onhashchange在页面加载,如果有哈希iirc。 – 2013-02-25 20:24:06

+0

你可以给我一个这样的例子,因为我对JS/jQuery非常新颖 – Simon 2013-02-25 20:27:29

回答

0

我是比较相信你不能在的jsfiddle显示功能,但是,如果你是一个正确的页面上,page.html中#示例名1在地址栏应导致你想要的功能显示。然而,为了使它在合适的页面上工作,你必须做你的代码所暗示的,即在hashchange上运行代码。这是为了确保在URL更改时显示特定的内容。

+0

但是当你在没有任何#example的情况下加载页面时,你如何使它显示所有内容。 – Simon 2013-02-25 20:37:56

+0

@Simon,你想在页面加载时显示所有内容吗?还是你说你想选择一个非特定的元素? – Bernie 2013-02-25 20:41:16

+0

我想要加载页面上的所有内容。但是,当URL更改为page.html#example1时,页面仅显示选定的div。 – Simon 2013-02-25 20:42:32

1

您应该检查哈希onloadonhashchange

// On page load 
$(document).ready(function(){ 
    // When the hash (#something) changes 
    window.onhashchange = function() { 
     doAction(); 
    }; 

    doAction(); 

    function doAction() { 
     // get the current hash minus '#' 
     var profileId = window.location.hash.substr(1); 

     if(profileId != '') { 
      // hide all profiles 
      $('.profile').hide(); 
      // show only the appropriate profile 
      $('#' + profileId).show(); 
     } 
    } 
}); 
+0

它的工作原理。我唯一的抱怨是,我想在没有“'#'+ profileId”的情况下一次显示所有内容。 这可以通过使用IF语句来完成,如果是的话,这将如何实现? – Simon 2013-02-25 20:55:36

+0

“一次显示所有内容”是什么意思?如果没有“'#'+ profileId”,是否希望显示简档1和简档2?或者如果没有散列,你想显示第一个元素? – Aboodred1 2013-02-25 21:00:49

+0

前者,如果没有“'#'+ profileId”,则显示配置文件1和配置文件2。 – Simon 2013-02-25 21:03:05