2017-07-24 2 views
1

Ich bin Java-Script, um mein li in ul aktiv auf sidebar-nav.But zu halten es jedes Mal deaktiviert wird ich auf Seite 2 wechseln, wie ich bin mit Paginierung:aktiv bleiben, während die Paginierung in Django-Vorlagen verwendet wird?

meine ul li-Code ist hier: -

<li> 
<a href="#" class="dropmenu"> <i class="fa fa-newspaper-o fa-lg margin_right5"></i> <span>News Management</span> 
</a> 
<ul> 
<li class=" "><a href="{% url 'cms:news-list' %}" class="submenu"><span class="">News List</span></a></li> 
<li class=" "><a href="{% url 'cms:news-reported' %}" class="submenu"><span class="">Reported News</span></a></li> 
</ul> 
</li> 

, was ich versucht: -

<li> 
<a href="#" class="dropmenu"> <i class="fa fa-newspaper-o fa-lg margin_right5"></i> <span>News Management</span> 
</a> 
<ul> 
<li class="{% if request.path =='/news/list'%} active {% endif%} "><a href="{% url 'cms:news-list' %}" class="submenu"><span class="">News List</span></a></li> 
<li class=" "><a href="{% url 'cms:news-reported' %}" class="submenu"><span class="">Reported News</span></a></li> 
</ul> 
</li> 

aber es ist nicht bei Paginierung arbeiten.

Antwort

0

Es gibt die dyanische Lösung für diese Aktivität des Menüs. Angenommen, Sie haben mehr als 20 oder 30 URLs, müssen Sie eine 50 Bedingungen dort notieren. Stattdessen versuchen Sie dies,

Geben Sie SideMenu Klasse zu jedem <a> Tag und Loop durch alle SideMenu-Elemente und passen Sie mit die aktuelle uRL an, dass jetzt, wenn Ihre uRL '/news-list' und die Lage Weg ist /app/new-list es aktive Klasse auf dieses <a> Element

$('.sidemenu').each(function(i, obj) { 
     var current_url = location.href.split('/'); // split the current url to get the last part of the url 
     var lastSegment = current_url.pop() || current_url.pop(); // handle potential trailing slash 
     var getlast = lastSegment.split('?'); // split your get parameters to remove them 
     var a = getlast[0]; # get the actual url by accessing the first element of array 

     var get_sidebar_url = $(obj).attr('href').split('/'); 
     var lastSegment2 = get_sidebar_url.pop() || get_sidebar_url.pop(); // handle potential trailing slash 
     var getlast2 = lastSegment2.split('?'); 
     var b = getlast2[0]; 

     # match that your last part of url is matching with your current url , if yes then give active class to li 
     if (b.startsWith(a) || a.endsWith(b)) { 
      $(obj).parent('li').addClass('active'); 
     }else{ 
      $(obj).parent('li').removeClass('active') 
     } 
    }); 

EDIT geben: Aber wenn Sie hier temporäre Lösung brauchen, ist das, was Sie Änderungsbedarf

,

Änderung {% request.path%} zu

{% if request.resolver_match.url_name == 'news-list(your_actual_urlname)' %} 
    active 
{% endif %} 
+0

ich einer Java-Script-Funktion bin mit meiner Sidebar aktiv, aber im Fall von Paginierung zu machen, es funktioniert nicht wie 'News/Liste? page = 2 & page_size = 10 '. Deshalb habe ich 'request.path' verwendet. –

+0

Ja, Sie können diese request.path-Bedingung entfernen und können stattdessen diese Logik für eine dynamische Lösung ausprobieren. – Aniket

Verwandte Themen