在 jQuery 中,要选择没有 display:none
样式的第一个元素,我们需要理解几个关键点:
:visible
选择器 - 选择当前可见的元素(包括 visibility:hidden
或 opacity:0
的元素):hidden
选择器 - 选择当前隐藏的元素display
属性 - 当设置为 none
时元素不显示且不占据空间:visible
选择器$('selector:visible').first();
not()
和 filter()
$('selector').not(':hidden').first();
// 或
$('selector').filter(function() {
return $(this).css('display') !== 'none';
}).first();
display
属性$('selector').filter(':not([style*="display:none"])').first();
<div class="item">Item 1 (visible)</div>
<div class="item" style="display:none">Item 2 (hidden)</div>
<div class="item">Item 3 (visible)</div>
<div class="item" style="display:none">Item 4 (hidden)</div>
<div class="item">Item 5 (visible)</div>
<script>
$(document).ready(function() {
// 方法1
var firstVisible1 = $('.item:visible').first();
console.log('方法1找到的元素:', firstVisible1.text());
// 方法2
var firstVisible2 = $('.item').not(':hidden').first();
console.log('方法2找到的元素:', firstVisible2.text());
// 方法3
var firstVisible3 = $('.item').filter(function() {
return $(this).css('display') !== 'none';
}).first();
console.log('方法3找到的元素:', firstVisible3.text());
});
</script>
:visible
选择器不仅排除 display:none
的元素,还排除宽度或高度为0的元素对于大型 DOM 结构,filter()
方法可能比 :visible
选择器更高效,因为 :visible
选择器需要 jQuery 进行更多的计算来判断元素的可见性。
没有搜到相关的文章