【问题标题】:HTML Breadcrumb Displaying Then Losing Location Once New Page Is Loaded加载新页面后,HTML 面包屑显示然后丢失位置
【发布时间】:2013-07-25 08:07:20
【问题描述】:

我的网站上的面包屑导航有问题。

在页面加载时,会显示主页(这是正确的)。当我点击导航菜单中的链接时,面包屑会更新为:

首页 > 新页面

但是,当加载新页面时,面包屑会返回到仅显示主页。

我的导航 JSP 文件:

<nav class="nav">
  <ul class="wrap">

    <li class="menu-nav--home">
      <a href="/home" title="home">
        <span class="icon-home"></span>
      </a>
    </li>
    <ul>
      <li><a href="/business">Business</a></li>
      <li><a href="/search">Search</a></li>
      <li><a href="/details">Search Deatils</a></li>
      <li><a href="/update">Change Records</a></li>
      <li><a href="/delete">Remove</a></li>
      <li><a href="/order">Order Deatils</a></li>
      <li><a href="/checkout">Checkout</a></li>
    </ul>
  </li>
</ul>
</nav>

<div class="wrap breadcrumb">
  <div class="item">
    <a href="#home">Home </a>
  </div>
</div>

我的 jQuery 代码:

$(function() {
  createBreadcrumbs();      
}

function createBreadcrumbs() {
  $('.site-nav a').on('click', function() {
    var $this = $(this),
    $bc = $('<div class="item"></div>');

    $this.parents('li').each(function(n, li) {
      var $a = $(li).children('a').clone();
      $bc.prepend(' > ', $a);
    });

    $('.breadcrumb').html( $bc.prepend('<a href="/">Home </a>') );    
    return false;
  });

任何帮助表示赞赏。

我已尝试遵循此处的建议 - jquery - dynamic breadcrumb

谢谢

【问题讨论】:

  • 你有实时链接吗?
  • @RobSterlini - 嗨,不幸的是,我相信上面链接中的 jsFiddle 复制了错误。在我的 jQuery 中,如果我返回 true,则页面将在单击导航菜单中的项目时重定向.. 并且面包屑将在打开新页面之前更新,然后在加载新页面时返回显示主页。跨度>
  • 这些面包屑有多深?我不确定 jQuery 和 javascript 是解决这些问题的最佳方式。你在 PHP 中工作吗?
  • @RobSterlini - 我会说 3 个级别。我的网站只使用 HTML5 和 jQuery。
  • 您似乎也忘记了);$(function() { createBreadcrumbs(); } 后面。

标签: jquery html jquery-ui jquery-plugins


【解决方案1】:

您的代码中有几个错误。首先,您在以下代码中忘记了);

$(function() {
  createBreadcrumbs();      
} ); //HERE!

您可能忘记将最后一个} 复制到此问题。我在这里添加了那个。您正在将处理程序附加到作为 site-nav 类元素的子元素的链接。您的代码中没有这样的东西。将其更改为 .nav a

function createBreadcrumbs() {
  $('.nav a').on('click', function() {
    var $this = $(this),
    $bc = $('<div class="item"></div>');

    $this.parents('li').each(function(n, li) {
      var $a = $(li).children('a').clone();
      $bc.prepend(' > ', $a);
    });

    $('.breadcrumb').html( $bc.prepend('<a href="/">Home </a>') );    
    return false;
  });
}

编辑:如果您希望它实际显示某些内容,则需要使用 ajax 加载页面并将生成的 html 推送到 DOM 中。

【讨论】:

  • 感谢您的建议。这 );错过了我的帖子。此外,我的 $('site-nav a').on('click'.. 来自早期版本,因此出现错误。我已更新为 $('.nav a').on('click'..在发布此消息之前。
  • 如果返回 false,如果单击导航菜单中的链接,面包屑将正确显示,但是,不会加载后续页面...如果返回 true,将加载后续页面,但是,新加载页面上的面包屑只会显示 Home .. 所以,正如你所建议的,我可能需要一个 ajax ......关于我如何实现这一点的任何想法?
  • 我会亲自在服务器端创建面包屑,因为这样它总是一个正确的树形结构。在客户端与 ajax 结合使用需要大量代码才能使其正确(或者您最终会得到 home &gt; page 2 &gt; page 3 &gt; home &gt; page 1 &gt; page 3 &gt; home 或类似的愚蠢的东西)。这是the jQuery ajax function
  • 我不反对在服务器端开发它。你知道任何方法吗?我正在使用带有 HTML5、jQuery 和 Java 的 MVC 框架。
  • 我已经接受了您的 cmets,并且已经开始为我的网站创建简单的面包屑导航。我采用了一种新策略,因为我的网站只有 3 个级别 - 主页 > 搜索 > 详细信息...请看这里 - stackoverflow.com/questions/17918487/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多