Javascript 如何使用jQuery查找具有特定类和CSS样式的元素?

Javascript 如何使用jQuery查找具有特定类和CSS样式的元素?,javascript,jquery,Javascript,Jquery,下面是代码的样子: <div class='class1'> <div class='class2'> <div class='class3'> <div class='class4'> <div class='class5'> <p>Some text 1</p> </div> </div>

下面是代码的样子:

<div class='class1'>
  <div class='class2'>
    <div class='class3'>
      <div class='class4'>
        <div class='class5'>
          <p>Some text 1</p>
        </div>
      </div>


      <div class='class4'>
        <div class='class5'>
          <p>Some text 1</p>
        </div>
      </div>


      <div class='class4'>
        <div class='class5' style="display:block;">
          <p>Some text 1</p>
        </div>
      </div>


      <div class='class4'>
        <div class='class5'>
          <p>Some text 1</p>
        </div>
      </div>
    </div>
  </div>
</div>
但它不起作用。

例如:

if($('.class1 .class2 .class3 .class4')
           .find( '.class5:first')
              .is(':visible')){
  console.log('yes');
}
请参阅:

实际上,class5类的每个div都有一个display:block属性

显示:块特性是每个块元素div的默认状态是块元素

我已经将其他div的display属性设置为none,只是为了显示以下代码的功能

$'div'。每个函数{ 如果$this.hasClass'class5'&&$this.is:可见{ log$this.html; } } 一些文本1

一些文本2

一些文本3

一些文本4

返回布尔值,您可以使用内部查找来选择元素:

$('.class1 .class2 .class3 .class4').find('.class5:visible')

你可以直接做

alert('is visible?', $( '.class5').is(':visible'));

您遇到的问题是,is返回一个布尔值,反映传入的元素或传入的第一个元素是否与提供的参数匹配

如果切换到filter,它将根据提供的参数筛选传入的集合;如果元素匹配,则保留该元素,否则将丢弃该元素:

让classFiveElems=$'.class1.class2.class3.class4.class5'.过滤器:可见'; console.logclassFiveElems; 一些文本1

一些文本1

一些文本1

一些文本1


这将返回具有display:block属性的.class5。在您的情况下,它将返回所有元素。因为div中的所有div都包含默认的display属性块,所以它将在您的案例中返回所有div。如果尝试,则必须确保只有要选择的elements.class5具有显示块属性

 var selector = $('.class1 .class2 .class3 .class4').find( '.class5').filter(function() {
                  return $(this).css('display') == 'block';
               });

粘贴到问题中时请缩进代码;这样读起来容易多了。检查这个$'.class1.class2.class3.class4'.find'.class5'.filter':visible'
alert('is visible?', $( '.class5').is(':visible'));
 var selector = $('.class1 .class2 .class3 .class4').find( '.class5').filter(function() {
                  return $(this).css('display') == 'block';
               });