0

我有以下脚本将当前类添加到<li>基于 Joomla 的网站中:

$(function(){
  $("#slide-menu > li ").click(function(e){
    e.preventDefault();
    $("#slide-menu > li ").addClass("current").not(this).removeClass("current");
  });
});

但是当我点击链接页面刷新和当前类消失这是我的html:

<ul id="slide-menu" class="menu menu-sidebar">
  <li class="level1 item187">
    <a class="level1" href="/plastikovye-okna-i-dveri/other/plastikovye-okna-i-dveri">
     <span>Пластиковые окна</span>
    </a>
  </li>
  <li class="level1 item188">
    <a class="level1" href="/plastikovye-okna-i-dveri-2/uncategorised/okna-rehau">
     <span>Входные двери</span>
    </a>
  </li>
</ul>
4

2 回答 2

1

你可以用两个东西来存储这种东西。LocalStorage 或在 Session 中,如果你想保持它完全客户端我应该使用 LocalStorage。

本地存储

使用 localstorage,您可以保存 currentClass。这会阻止您使用服务器端代码。

一个小例子:

/* Set localStorage item */
localStorage.setItem('name', 'value');

/* Get localStorage item */
localStorage.alpha;

/* Or */
localStorage['alpha'];

当您将类保存在 localStorge 中时,您可以将其添加到准备好的文档中。

会话存储

另一种存储它的方法是在会话中。这需要向您的服务器发出请求。最好的办法是使用 Ajax(我为此使用了 jquery 库)。

一个小例子:

设置会话

/*  Client side */
function setSession($key, $value) {
   $.ajax({
     type: "POST",
     url: "setSession.php",
     data: { key: "Foo", value: "Bar" }
    });
}

/* Server side (PHP example) */
<?php
  /* secure it your self. */
  $_SESSION[$_POST['key']] = $_POST['value'];
?>

获取会话

/*  Client side */
function getSession($key) {
   $.ajax({
     type: "POST",
     url: "getSession.php",
     data: { key: "Foo" }
    }).done(function( callback ) {
      return callback ;
    });
}

/* Server side (PHP example) */
<?php
  /* secure it your self. */
  echo $_SESSION[$_POST['key']];
?>

使用功能

var foo = getSession("foo");

检查 currentClass 并做你的伎俩;)

于 2013-04-16T10:46:44.977 回答
0

页面刷新后,它将再次加载所有内容,因此您无法保留它,但您可以按照这三种方法之一来实现:

  1. 向服务器发送 ajax 调用并将其保存在那里
  2. 将值保存到 cookie 中,并在脚本加载时检查该 cookie 是否存在并从中加载值
  3. 匹配来自请求的 URL 的当前选定元素。

祝你好运

于 2013-04-16T10:42:29.647 回答