Need to use jQuery.find to find element with specific style

前端 未结 7 1364
天命终不由人
天命终不由人 2021-01-01 10:28

Right... I need to find all < ul style=\"display: block;\"> elements, so that I can set it do display:none.

I think I\'m on the right path here... but not quite t

相关标签:
7条回答
  • 2021-01-01 10:39

    You may be able to use the attribute selectors, and the 'contains' option

    $('#adminMenu li ul[style*="display:block"]').hide()
    

    This essentially says 'any ul who's style attribute contains the text display:block'

    0 讨论(0)
  • 2021-01-01 10:46
    $('#adminMenu li').find("ul:visible").css('display', 'none');
    

    or

    $('#adminMenu li').find("ul:visible").hide();
    

    or

    $('#adminMenu li ul:visible').hide();
    

    to name a few ways

    0 讨论(0)
  • 2021-01-01 10:51

    That's tricky as stated but is solvable other ways. The easiest is:

    $("#adminMenu li ul:visible").hide();
    

    assuming items are either hidden or not. Of course, considering you want to hide them all why not just:

    $("#adminMenu li ul").hide();
    

    Try and avoid changing CSS style directly. It's problematic. It's hard to reverse and as you're discovering hard to search for. Use a class instead:

    #adminMenu li ul { display: none; }
    ul.block { display: block; }
    

    with:

    $("#adminMenu li ul").removeClass("block");
    

    or

    $("#adminMenu li ul.block").removeClass("block");
    
    0 讨论(0)
  • 2021-01-01 10:55

    Don't know how to do it in one line, but here's how you can do it in a couple more:

    jQuery('#adminMenu li').find("ul").each(function (){
      if($(this).css("display") == "block"){
        // do something
      }
    });
    

    If what you want is to handle all visible elements (instead of only the display: block ones), you could try the :visible selector instead.

    0 讨论(0)
  • You can use filter. (http://api.jquery.com/filter/)

    So you can do as below.

    $('ul').filter(function() {
        return $(this).css('display') == 'block';
    });
    
    0 讨论(0)
  • 2021-01-01 11:01

    You coud use the fadeOut() or slideUp() methods for a visual effect:

    jQuery('#adminMenu li').find("ul").fadeOut('fast');
    
    jQuery('#adminMenu li').find("ul").slideUp('fast');
    
    0 讨论(0)
提交回复
热议问题