2011-01-30 74 views
1

我使用的代码来自this tutorial在url中的Ajax哈希

在URL中,它很奇怪;如果我点击回家,它会转到example.tld/home#,但我希望在后面加上散列。 example.tld/#home。如果我要进入联系页面,它将显示为/home#co ...不显示整个单词。 (联系)。当我改变页面时,我想#contact替换#home。另外,我怎样才能在不同的页面上加载而不是#home?例如:点击example.tld/#contact,进入#contact页面。

而且......这里是代码我从tutorial修改:

// Check for hash value in URL 
    var hash = window.location.hash.substr(1); 
    var href = $('nav ul li a').each(function(){ 
     var href = $(this).attr('href'); 
     if(hash==href.substr(0,href.length-5)){ 
      var toLoad = hash+'.html #main-content'; 
      $('#content').load(toLoad) 
     } 
    }); 

    $('nav ul li a').click(function(){ 

    var toLoad = $(this).attr('href')+' #main-content'; 
    $('#main-content').hide('fast',loadContent); 
    $('#load').remove(); 
    $('#wrapper').append('<span id="load">LOADING...</span>'); 
    $('#load').fadeIn('normal'); 
    window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5); 
    function loadContent() { 
     $('#main-content').load(toLoad,'',showNewContent()) 
    } 
    function showNewContent() { 
     $('#main-content').show('normal',hideLoader()); 
    } 
    function hideLoader() { 
     $('#load').fadeOut('normal'); 
    } 
    return false; 

    }); 

觉得我应该CACH一些正在重复选择的?

而且这里是HTML:

<div id="main-content" class="home"> 

… content to be loaded 

</div> 

导航:

<nav> 
     <ul> 
      <li><a href="home">Home</a></li> 
      <li><a href="about">About</a></li> 
      <li><a href="contact">Contact</a></li> 
     </ul> 
     </nav> 

我使用htaccess的,所以我不必须包括文件扩展名,但如果需要,这些文件是.php

比方说,我在#home,如果我点击#home再次链接,它会重新加载相同的页面,有没有什么办法可以阻止这个,如果我已经在那个网页上?

回答

0

变化

window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5); 

window.location.hash = $(this).attr('href');