2010-11-24 141 views
0

你好,我有网站,我显示/隐藏在默认情况下启动加载的分区。但问题是,当我刷新页面时,它总是回到主分区。有什么办法可以做到像mysite /#news mysite /#这样的东西吗?通过URL传递值

的代码,我有:

 $('a#btnNews').click(function() 
     { 
      $('#divabout').hide(); 
      $('#divnews').fadeIn(); 
      $('#pagetimer').load('scripts/loadtimer.php'); 
      return false; 
     }); 

     $('a#btnAbout').click(function() 
     { 
      $('#divrooster').hide(); 
      $('#divabout').fadeIn(); 
      $('#pagetimer').load('scripts/loadtimer.php'); 
      return false; 
     }); 

回答

0

在本可以使用window.location.hash代替。

if (location.hash != "") { 
    $('a#'+location.hash).click(); 
} 
$('a#btnNews').click(function() 
{ 
    $('#divabout').hide(); 
    location.hash = 'btnNews'; 
    $('#divnews').fadeIn(); 
    $('#pagetimer').load('scripts/loadtimer.php'); 
    return false; 
}); 
$('a#btnAbout').click(function() 
{ 
    $('#divrooster').hide(); 
    location.hash = 'btnAbout'; 
    $('#divabout').fadeIn(); 
    $('#pagetimer').load('scripts/loadtimer.php'); 
    return false; 
}); 

确保把所有这一切无论是$(function(){});$(document).ready(function(){});里面!

您可以使用$('a#'+location.hash).click();或者您可以更改散列直接淡入目标div。您可以使用e.preventDefault()而不是return false;。 (它也工作得更好)

$('a#btnNews').click(function(e) { 
e.preventDefault(); 
... 
}); 
0

不完全像你那里,但你可以通过更新散列保存页面的状态。

有和高级的插件,将为您处理,或者你可以推出自己的。

插件:http://benalman.com/projects/jquery-bbq-plugin/

滚你自己:http://jsbin.com/oyeqe3/3#List2

在滚你自己的例子,你可以看到列表2被作为哈希通过#。它会保持第二个列表显示,其他隐藏。从上面的链接

代码示例:

HTML:

<a href="#List1" class="trigger">Show 1</a> &nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp; 
<a href="#List2" class="trigger">Show 2</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp; 
<a href="#List3" class="trigger">Show 3</a> &nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp; 

<ul id="List1"> 
    <li>One</li> 
</ul> 
<ul id="List2"> 
    <li>Two</li> 
</ul> 
<ul id="List3"> 
    <li>Three</li> 
</ul> 

jQuery的

​​

不是美丽的实现,但你希望的想法。