javascript - jQuery 检查 Element 是否在 .prevAll() 或 .nextAll() 的结果中

标签 javascript jquery

我本质上是在网络应用程序上创建一个带有选项卡的向导,并且事件选项卡之前的选项卡将以一种方式(绿色)表示完成,而之后的选项卡以不同的方式表示未完成(灰色) 。

enter image description here

<div class="tabContainer">
    <ul class='tabs'>
       <li><a href='#tab1'><span class="badge">1</span></a></li>
       <i class="icon-arrow-right"></i>
       <li><a href='#tab2'><span class="badge">2</span></a></li>
       <i class="icon-arrow-right"></i>
       <li><a href='#tab3'><span class="badge">3</span></a></li>
       <i class="icon-arrow-right"></i>
       <li><a href='#tab4'><span class="badge">4</span></a></li>
       <i class="icon-arrow-right"></i>
       <li><a href='#tab5'><span class="badge">5</span></a></li>
    </ul>
</div>

在我编写的名为 setTab() 的自定义函数中,我传递了我想要激活的选项卡,然后尝试修改所有其他选项卡以具有上面指示的样式。

function setTab(tabId) {

        var $active, $content, $links = $('ul.tabs').find('a');

        // Make tab active
        $active = $($links.filter('[href="#tab'+tabId+'"]')[0] || $links[0]);
        $active.addClass('active');
        $active.find('span').addClass('badge btn-info');
        $content = $($active.attr('href'));

        // If Tab before, show as complete
        var previousTabs = $active.prevAll('a');
        previousTabs.removeClass('active');
        previousTabs.find('span').removeClass('btn-info').addClass('badge btn-success');

        // If Tab after, show as incomplete
        var nextTabs = $active.nextAll('a');
        nextTabs.removeClass('active');
        nextTabs.find('span').removeClass('btn-info').removeClass('btn-success');

        // Hide the remaining content
        $links.not($active).each(function () {
            $($(this).attr('href')).hide();
        });

        // Show Content
        $content.show();
    }

我正在寻找一种方法来检查某个元素是否在 jQuery 中的 prevAll()nextAll() 命令的结果中。

我尝试使用 $.inArray$.each 来解决这个问题,但运气不佳。我猜第一个不起作用,因为结果集是一个对象,而不是一个数组。第二个不起作用,因为我需要将它与 $.each 函数内不可用的元素进行比较。我确信通过足够的调整我可以解决这个问题,但必须有更好的方法。

确定一个元素是否存在于另一个元素之前或之后的最佳方法是什么,以及它是否使用我一直在尝试的 prevAllnextAll 方法,如何与该结果集进行 bool 匹配?

最佳答案

您可以使用索引:

$('element').nextAll().index(el) != -1

关于javascript - jQuery 检查 Element 是否在 .prevAll() 或 .nextAll() 的结果中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17306601/

相关文章:

javascript - Canvas 像素错误

javascript - 如何在DataTables插件中添加编辑按钮?

javascript - Google Chrome 开发者工具 - 全局观察一个变量

javascript - div 内容更新后有功能工作

javascript - jQuery Multi Select Option - 检查一个选项是否被选中

javascript - Airbnb React 日期范围选择器仅显示当前月历未选择日期月历

javascript - 有没有办法将 css 写入任何在其 id 中包含特定字符串的 div?

javascript - jQuery ajax 请求代理

javascript - $ ('.foo' ).eq(0) 比 $ ('.foo' ) 快吗?

php - 使用 Javascript/PHP 验证公钥