2013-07-25 30 views
0

我的網站上的麪包屑導航有問題。HTML Breadcrumb在加載新頁面後顯示然後丟失位置

在網頁加載時,首頁顯示(這是正確的)。當我在我的導航菜單中點擊一個鏈接,麪包屑與更新說:

首頁>新頁面

然而,當新頁面被加載時,麪包屑回到只顯示Home。

我的導航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

感謝

+0

你有鏈接了嗎? –

+0

@RobSterlini - 嗨,不幸的是,我不相信上面的鏈接中的jsFiddle複製錯誤。在我的jQuery中,如果我返回true,那麼頁面將在導航菜單中點擊一個項目時重定向..並且麪包屑將在打開新頁面之前更新,然後返回到顯示新頁面加載時的主頁。 –

+0

這些麪包屑有多深?我不確定jQuery和javascript是解決這些問題的最佳方法。你在使用PHP嗎? –

回答

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。

+0

感謝您的意見。 );我的帖子失蹤了。另外,我的$('site-nav a')。on('click'..)是從早期版本開始的,因此我錯誤地更新了$('。nav a')。on('click'.. .. –

+0

如果返回false,如果點擊Nav菜單中的鏈接,breadcrumb將正確顯示,但是,後續頁面不會加載...如果返回true,則隨後的頁面將加載,但是,麪包屑在新加載的頁面上只會顯示Home。所以,正如你所建議的那樣,我可能需要一個ajax ...我可以如何實現這一點的任何想法? –

+1

我會親自在服務器端創建麪包屑,因爲這樣它將始終是一個正確的樹形結構。在客戶端與ajax一起使用它需要很多代碼才能正確使用(或者你最終會遇到'home> page 2> page 3> home> page 1> page 3> home''或者一些愚蠢的東西像那樣)。這是[jQuery ajax函數](http://api.jquery.com/jQuery.ajax/)。 – Sumurai8

相關問題