javascript - active class does not show -
i have menu:
<nav class="show-for-large-up main-navigation default-navigation align_right" role="navigation"> <ul class="menu-main-navigation active"> <li id="menu-item-393" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home"> <a href="https://website.com/">home</a> </li> <li id="menu-item-415" class="menu-item menu-item-type-post_type menu-item-object-page> <a href="https://website.com/shop/">shop</a> </li> <li id="menu-item-491" class="menu-item menu-item-type-post_type menu-item-object-page"> <a href="https://website.com/about/">about</a> </li> <li id="menu-item-1086" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-1049 current_page_item active"> <a href="https://website.com/services/" class="active">services</a> </li> <li id="menu-item-403" class="menu-item menu-item-type-post_type menu-item-object-page"> <a href="https://website.com/portfolio/">portfolio</a> </li> <li id="menu-item-1010" class="menu-item menu-item-type-post_type menu-item-object-page"> <a href="https://website.com/contact-us/">contact us</a> </li> <li id="menu-item-503" class="menu-item menu-item-type-post_type menu-item-object-page"> <a href="https://website.com/my-account/">login / register</a> </li> </ul> </nav>
myscript.js:
jquery(document).ready(function($) { var activeurl = window.location; $('a[href="'+activeurl+'"]').parent('li').addclass('active'); $(function () { var url = window.location.pathname, urlregexp = new regexp(url.replace(/\/$/, '') + "$"); $('a').each(function () { if (urlregexp.test(this.href.replace(/\/$/, ''))) { $(this).addclass('active'); $(this).parent().addclass("active"); } }); }); var aurl = window.location.href; // absolute url var parts = aurl.split('/'); var lastsegment = parts.pop() || parts.pop(); // handle potential trailing slash $(".main-navigation > ul > li > a").each(function(){ if($(this).attr("href") == aurl || $(this).attr("href") == '' ) { $(this).addclass('active'); $(this).parent().addclass("active"); } }); });
i loading js script:
function load_my_script(){ wp_register_script( 'my_script', get_template_directory_uri() . '/js/myscript.js', array( 'jquery' ) ); wp_enqueue_script( 'my_script' ); } add_action('wp_enqueue_scripts', 'load_my_script');
loading css script:
function enqueue_custom_stylesheets() { if ( ! is_admin() ) { wp_enqueue_style( 'custom_css', get_template_directory_uri() . '/css/customcss.css' ); } } add_action( 'wp_enqueue_scripts', 'enqueue_custom_stylesheets', php_int_max );
customcss.css:
.main-navigation > ul > li > a:active { text-decoration: underline !important; } .main-navigation ul li:active { text-decoration: underline !important; }
everything seems in place (loaded),
but :active
state shows if use developer console
trigger active state
, on href
.
$(this).parent().addclass("active");
not effect although answers here refer parent()
how can activate active
state on href
?
thanx
try below code.
jquery
<script> $(document).ready(function(){ $(window).load(function(){ var x = window.location.href; $('.main-navigation ul a[href="'+x+'"]').each(function() { if(x == window.location.href){ $('.main-navigation ul li').removeclass('active'); $(this).parent('li').addclass('active'); } }); }); }); </script>
in css
.main-navigation ul li.active a, .main-navigation > ul > li.active > a{ text-decoration: underline !important; }
i'ved tried above jquery
code , works! :)
Comments
Post a Comment