javascript - 如何获取在jquery中可见的下一个元素

标签 javascript jquery css

我有一些元素以及每个元素中的上一个和下一个链接。 就像我点击下一步一样,我只想将一个类添加到下一个可见的 div,我想跳过隐藏的 div,如果 div 是隐藏的,则将类添加到下一个 div,它在隐藏元素之后可见。为此我写了这样的东西

$('.next').click(function(){
   $('.slide').removeClass('highZindex');
   $(this).closest('.slide').next('.slide:visible').addClass('highZindex')
})

我只想从所有这些元素中删除添加的类,只需要添加到下一个可见元素,但是如果单击下一个链接并且下一个 div 被隐藏,它会跳过所有元素并直接转到最后一个div 和 class 也没有添加到任何元素。

$('.slide').first().addClass('highZindex');


$('.prev').click(function(){
$('.slide').removeClass('highZindex');
$(this).closest('.slide').prev('.slide:visible').addClass('highZindex')
})

$('.next').click(function(){
   $('.slide').removeClass('highZindex');
   $(this).closest('.slide').next('.slide:visible').addClass('highZindex')
})
.slide {border:1px solid; height:200px; width:200px;position:absolute;top:0px; left:0px; background-color:#fff; }
.highZindex {z-index:1000}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div class="slide">1  <a href="#" class="prev">prev</a> <a href="#" class="next">next</a></div>
<div class="slide">2 <a href="#" class="prev">prev</a> <a href="#" class="next">next</a></div>
<div class="slide">3 <a href="#" class="prev">prev</a> <a href="#" class="next">next</a></div>
<div class="slide" style="display:none;">4 <a href="#" class="prev">prev</a> <a href="#" class="next">.next</a></div>
<div class="slide">5 <a href="#" class="prev">prev</a> <a href="#" class="next">next</a></div>
<div class="slide">6 <a href="#" class="prev">prev</a> <a href="#" class="next">next</a></div>
<div class="slide">7 <a href="#" class="prev">prev</a> <a href="#" class="next">next</a></div>

最佳答案

只需将 'prev'/'next' 更改为 'prevAll'/'nextAll' 和从列表中选择第一项

换行

$(this).closest('.slide').prevAll('.slide:visible').first().addClass('highZindex');
$(this).closest('.slide').nextAll('.slide:visible').first().addClass('highZindex');

如果你不想循环 prev btn 你可以添加条件:

$('.prev').click(function(){
    if(!($(this).closest('.slide').prevAll('.slide:visible').length == 0)) {
        $('.slide').removeClass('highZindex');
        $(this).closest('.slide').prevAll('.slide:visible').first().addClass('highZindex'); 
    }
})

关于javascript - 如何获取在jquery中可见的下一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31592686/

相关文章:

javascript - 在 Node.js 中复制 Java 密码哈希代码 (PBKDF2WithHmacSHA1)

javascript - JSON 到 Tree JS

javascript - 在 DOM 中双击了哪个 HTML 元素

html - 在页脚中使用 div 标签 float

css - 使用水平滚动制作元素的正确方法

css - 在 Meteor.js 中使用自定义 bootstrap3 主题

javascript - 字符串到整数 leetcode

javascript - Selenium Webdriver 自动完成文本框

php - 重新渲染添加元素主干的点击事件

jquery - 单选按钮选中时添加类,未选中时删除类