2016-04-14 7 views
5

Wiem, że to pytanie ma wiele wspólnego, ale po prostu nie mogę wymyślić, jak to zrobić, korzystając z już wysłanych postów. Tutaj mam różne menu na jednej stronie. Po kliknięciu każdego menu chcę, aby to menu było aktywne, ale tutaj nie działa.klasa aktywna nie działająca na stronie

To jest moja strona Widok:

<ul class="nav navbar-nav navbar-right"> 
    <li class="active"> <a class="page-scroll" href="<?php echo base_url();?>nowaste_control/index#about">About</a> </li> 
    <li class=""><a class="page-scroll" href="<?php echo site_url('nowaste_control/index#product'); ?>">Products</a> </li> 
    <li class=""> <a class="page-scroll" href="<?php echo base_url();?>nowaste_control/index#technology">Technology</a> </li> 
</ul> 

To jest mój jQuery:

<script type="text/javascript"> 
$('.nav navbar-nav li a').click(function($) { 
    $('a[href="'+window.location.pathname+window.location.hash+'"]').parent().addClass('active'); 
}); 
</script> 
+0

użycie '$ (document) .Na ('click', '. Nav navbar-nav li a ', function ($) {'zamiast' $ (' nav navbar-nav li a '). click (function ($) {'dla delegowania zdarzenia – guradio

+0

użyj dokumentu gotowy komunikat – madalinivascu

+0

jaki jest dokładny problem, nie w stanie wywołać zdarzenie kliknięcia lub nie uzyskać klasa dodana? –

Odpowiedz

4

Oto przykładowy sposób to zrobić przy okazji, ponieważ nie mogę mieć ciebie fragment kodu html do listy nawigacji właśnie stworzyliśmy prosty

..

tutaj jest html i stworzył

<div class="nav"> 
    <li class="active"> <a class="page-scroll" href="#about">About</a> </li> 
    <li class=""><a class="page-scroll" href="#product">Products</a> </li> 
    <li class=""> <a class="page-scroll" href="#technology">Technology</a> </li> 
</div> 

Oto javascript

$(document).ready(function(){ 
    $(document).on('click', '.nav li a', function() { 
    console.log($(this)); 
    $('.active').removeClass('active'); 
    $(this).parent().addClass('active'); 
    }); 
}); 

DEMO

+0

bardzo dziękuję ..teraz zrozumiałam ... zrobiłeś mój dzień wielkie dzięki –

0

Spróbuj następującą

$(function(){ 
    $('.page-scroll').on('click',function(){ 
     $('.active').removeClass('active'); 
    $(this).parent().addClass('active'); 
    }); 
    }); 

to wykorzystać, aby wyzwolić aktywną klasę na stronie obciążenia:

$(function(){ 
$('.active').removeClass('active'); 
$('a[href="'+window.location.href'"]').parent().addClass('active'); 
}); 
+0

tutaj iam używając fragmentu skrótu, więc musimy uwzględnić to również –

+0

zobacz drugą opcję – madalinivascu

+0

wszelkie zmiany należy wprowadzić do kontrolera –

0

Spróbuj: możesz zawinąć skrypt w $(function(){..});, aby upewnić się, że DOM jest gotowy. Również Twój selektor jQuery muszą być poprawione, bo jak na class="nav navbar-nav navbar-right" Twój selektor musi być .nav.navbar-nav i nie .nav navbar-nav (ta mówi, że jest dzieckiem navbar-nav wewnątrz nav. Patrz poniżej kod

$(function(){ 
    //here instead of ".nav navbar-nav" change it to ".nav.navbar-nav" 
    $('.nav.navbar-nav li a').click(function($) { 
    $('a[href="'+window.location.pathname+window.location.hash+'"]').parent().addClass('active'); 
    }); 
}); 

A jeśli tworzysz te elementy dynamicznie następnie wykorzystać .on() jak pokazano poniżej -

$(function(){ 
     //here instead of ".nav navbar-nav" change it to ".nav.navbar-nav" 
     $(document).on('click','.nav.navbar-nav li a',function($) { 
     $('a[href="'+window.location.pathname+window.location.hash+'"]').parent().addClass('active'); 
     }); 
}); 
+0

zmieniłem zgodnie z kodem, ale bez postępu –

+0

możesz spróbować wprowadzić alert wewnątrz obsługi kliknięcia i sprawdzić, czy pokazuje alert. Czy są jakieś błędy konsoli w przeglądarce? Proszę odtworzyć swój problem na jsfiddle i udostępnij nam link. –

+0

alert działa –