3

我有一个包含大量 jQuery 的主页...隐藏和显示基于点击选项卡等的 div。在显示的 div 中有指向其他页面的链接,这些页面可以回发并获取新页面。

现在我希望页面上的“后退”按钮在用户单击它时返回到页面的先前状态。因此,如果他们在Sell_your_books div单击链接时选择了显示的和“Sell_your_books 选项卡”,我希望有一个返回按钮转到主页,并选择了显示的“Sell_your_books 选项卡” Sell_your_books div

我知道我必须将一个变量解析(POST)到主页才能用 php 实现这一点,但我不确定实现它的正确方法。

谢谢

4

2 回答 2

2

使用哈希超链接和hashchange事件。在 jQuery 中:

$(window).on('hashchange',function() {
    var hash = location.hash.substring(1); // strip the leading # symbol
    // now run code based on whatever the value of 'hash' is
});

HTML

<a href="#hash1">function A</a>
<a href="#hash2">function B</a>

现在,每当用户单击浏览器的“后退”按钮(或触发 的 HTML 按钮时history.go(-1)),它将返回到之前选择的任何散列并再次触发 hashchange 事件。

更多细节

于 2013-06-19T09:54:26.390 回答
0

创建一个隐藏的输入字段并用当前活动选项卡填充此字段。

<form>
 ..
 <input type="hidden" name="currentTab" value="" />

</form>

一些 jQuery 来设置正确的值:

$( YOUR TAB SELECTOR ).on('click', function() { 
 $('input[name=currentTab]').val( $(this).attr('id') ); 
});

在处理您数据的 PHP 脚本中,您可以创建一个反向链接,如下所示:

<?php

 if( isset($_POST['currentTabe']) && $_POST['currentTab'] != '' ) {
   $backLink = "your_page.php?tab=" . $_POST['currentTab'];
 }

?>

如果您现在通过反向链接调用带有标签的站点,您可以创建一个额外的 document.ready 事件,该事件将活动标签设置为 PHP $_GET Parm。

<script type="text/javascript">
 <?php
  if( isset($_GET['tab']) && $_GET['tab'] != '' ) {
 ?>
  jQuery(document).ready( function() {

   var tab = $('#'+ <?=htmlspcialchars( $_GET['tab'] )?>);
   if( tab.length <= 0 ) return false; //element not found

   //active tab
   tab.toggle('click'); //click or do something else to activate the current tab

  });
 <?php 
  }
 ?>
</script>

注意:当心 XSS(跨站点脚本),因此请检查您的 $_POST 和 $_GET 以获取正确的值。

于 2013-06-19T10:15:39.547 回答