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';
});