0

我对 JQuery 很陌生,我正在研究基于 Superfish 脚本的菜单。当我通过链接导航时,我无法将 addClass 保留在当前单击的项目集上。

我的代码:

JS

<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function(){

jQuery("ul.sf-menu").superfish({pathClass:  'corrente'});            

jQuery('#sf-menu li a').click(function() {
      jQuery("#sf-menu li").removeClass('corrente');
      jQuery(this).parents().filter("li").addClass('corrente');
      jQuery("ul.sf-menu").superfish({pathClass:  'corrente'    });
});
});
</script> 

HTML

<ul id="sf-menu" class="sf-menu sf-navbar">
  <li><a href="#">Home</a></li>
  <li><a href="#">Band</a></li>
  <li><a href="#">Solo Projects</a>
      <ul>
      <li><a href="#">Tim</a></li>
      <li><a href="#">Tom</a></li>
      <li><a href="#">John</a></li>
      </ul>
  </li>
  <li><a href="#">Media Appearances</a></li>
  <li><a href="#">Tour</a>
      <ul>
     <li><a href="#">The Reunion Tour</a>
         <ul>
        <li><a href="#">North American Leg</a></li>
     </ul>
         </li>
      </ul>
  </li>
  <li><a href="#">Gallery</a></li>
</ul>

上面的 html 工作正常,“corrente”类设置正确,但是当我更改插入实际链接的 html 时,该类设置正常,但在加载目标页面时会丢失。

您能否就如何存储添加的课程并通过目标页面传递给我任何建议?

先感谢您

4

3 回答 3

1

当您转到新页面时,整个 Javascript 环境会重置,因此您无法在页面之间保留对 javascript 所做的更改。

处理此问题的可能方法:

  1. 在 iframe 或单独的窗口中打开新页面。外部页面(对于 iframe)或原始页面(对于单独的窗口)不会重新加载,因此其中的 javascript 更改不会丢失。
  2. 当您传递到新页面时,将某种查询字符串添加到 url,然后在新页面中(在 javascript 中)解释该查询字符串以再次进行任何更改。
  3. 将数据放入允许您在新页面上应用更改的 cookie 中。
于 2009-11-23T20:19:23.580 回答
1

如果它仍然有帮助,我会使用一个名为jquery.cookie的 jQuery 插件。

就我而言,我正在使用 WordPress 和一个测验插件,在每一步之后,页面都会重新加载,我会丢失我的修改。

因此,在我设置 jquery.cookie 插件后,我能够保留 jQuery 修改,例如添加或删除类。

于 2015-02-24T17:54:50.463 回答
0

你可以

  • 将添加的类存储在 cookie 中
  • 向服务器发出 AJAX 请求以将状态持久保存在服务器上(可能在数据源中,例如数据库中)
于 2009-11-23T20:19:03.733 回答