check if
  • has an active link?

2019-09-01 04:25发布

i have

<ul>
<li class="section-title">HEADER which triggers dropdown</li>
   <li><a href="element_one">element one</a></li>
   <li><a href="element_one">element one</a></li>
   <li><a href="element_one">element one</a></li>
</ul>

i'm hiding all li-elements (except the first one) with this line:

$('#menu ul li.section-title:first-child').parent().children('li').hide();

i wonder if it's possible to query if one of those three links is active and if so nothing should hide!

is that even possible? thank you for your help!

2条回答
The star\"
2楼-- · 2019-09-01 04:46

Why not attach a class to the active link, then you could do something like:

$(document).ready(function() { $(".myClass").doSomething();});
查看更多
Ridiculous、
3楼-- · 2019-09-01 05:00
  1. Your code will actually hide all li elements (including the first one).
    Use $('#menu ul li:not(:first-child)').hide(); to hide all but the first one..
  2. For the next part (to only hide them if none is the current one) use

    var loc = window.location.href;
    var anyActive = false;
    $('#menu li a').each(function(){
        anyActive = anyActive || (this.href == loc);
    });
    
    if (!anyActive)
        $('#menu ul li:not(:first-child)').hide();
    

Update with working code, after comment

var loc = window.location.href;

$('#menu li a').each(function(){
    if (this.href == loc)
        $(this).addClass('activelink');
});

$('#menu ul:not(:has(.activelink)) li:not(:first-child)').hide();

live example: http://jsfiddle.net/gaby/SMmtS/21/

查看更多
登录 后发表回答