开发者

check if <ul> <li> has an active link?

开发者 https://www.devze.com 2023-01-05 03:08 出处:网络
i have <ul> <li class=\"section-title\">HEADER which triggers dropdown</li> <li><开发者_高级运维;a href=\"element_one\">element one</a></li>

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!


  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/


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

$(document).ready(function() { $(".myClass").doSomething();});
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号