2016-07-09 11 views
0

Mit Umbraco7 habe ich eine PartialView auf der Grundlage von Umbracos Sitemap erstellt. Ich habe es geschafft, dem aktuellen <li> eine "aktuelle" Klasse hinzuzufügen, aber ich möchte auch die Eltern UL ansprechen.Umbraco7 Navigation: Klasse zum Eltern hinzufügen UL

Ein kurzer Überblick:

<ul> 
    <li> 
    <ul> <-This guy needs a Current/Parent Class 
     <li class="current"> 
      Here you are 
     </li> 
    </ul> 
</li> 

Teilansicht:

@inherits Umbraco.Web.Macros.PartialViewMacroPage 

@{ var selection = CurrentPage.Site(); } 

    @Traverse(selection) 


@helper Traverse(dynamic node) 
{ 
var maxLevelForSitemap = 3; 

var selection = node.Children.Where("Visible").Where("Level <= " + maxLevelForSitemap); 

if (selection.Any()) 
{ 
    <ul> 
     @foreach (var item in selection) 
     { 
      string cssClass = @item.Id != CurrentPage.Id ? "" : "current"; 

      <li class="@cssClass"> 
       <a href="@item.Url">@item.Name</a> 

       @Traverse(item) 
      </li> 
     } 
    </ul> 
} 
} 
+0

Können Sie weitere Details darüber angeben, welche Klasse dieses UL-Tag benötigt? Ist es nur für die ul, die die aktuelle li enthält? – Mivaweb

+0

Hallo Mivaweb, wenn ich auf eine Seite innerhalb des UL zugreife und es ein Postback gibt, bricht mein Menü zusammen. Wenn ich eine Klasse auf der vorherigen UL (Eltern zu der aktuellen Klasse) habe, dann kann ich den UL mit CSS anvisieren und ihm eine Anzeige geben: Block. –

Antwort

0

Sie können ein kleines jquery Skript für diese Anwendung, dass jedes Mal die Seite geladen ausgeführt wird, oder wenn ein Postback occures:

$(document).ready(function() { 
    $('li.current').closest('ul').addClass('active'); 
}); 

Dies wird die aktuelle li erhalten d Suche nach dem nächsten ul (Eltern) und füge die Klasse active hinzu.

+0

Es ist eigentlich eine gute Lösung Mivaweb :) Ich möchte es innerhalb der Teilansicht arbeiten lassen, aber das funktioniert gut, Prost! –

Verwandte Themen