每个函数只触发一次

Each function triggers only once

我正在尝试在具有相同 class 的多个 owl-carousel 滑块上触发一个功能。如果我执行 console.log,它会记录两次,但仅适用于第一个滑块。

这是我的函数:

function setActiveItem(){
        var item = $('.owl-item');
        var itemLink = $('.owl-item a');
        var pos = $('.is-active').parent().parent().index();

        $('.slider-mobile').each(function() {
            if($(this).find(itemLink).is('.is-active')) {
                item.removeClass('active');
                $(this).trigger('to.owl.carousel', [pos, 1, true]);
            }
        })
    }

    setActiveItem();

这是我的标记的简化版本:

<ul class="list-container slider-mobile" data-stage-padding-items="200">
    <li class="list-item">
        <a href="#" class="title title--small list-link is-active">item</a>
    </li>
</ul>
<ul class="slider-mobile" data-stage-padding-items="200">
    <li class="list-item">
        <a href="#" class="title title--small list-link is-active">item</a>
    </li>
</ul>

我不确定我是否正确使用了 each() 函数,或者它是否完全符合我的需要。

您应该像这样在文档中激活您的侦听器:

$(document).ready(function(){
   setActiveItem();
});

好的,我明白了。 @Reinder Wit 你是对的,我只引用了第一个滑块的项目,所以我的两个滑块都得到了相同的数据。

我这样做了:

function setActiveItem(){

        $('.slider-mobile').each(function() {
            var item = $(this).find('.owl-item');
            var itemLink = $(this).find('.owl-item a');
            var pos = $(this).find('.is-active').parent().parent().index();

            if($(this).find(itemLink).is('.is-active')) {
                item.removeClass('active');
                $(this).trigger('to.owl.carousel', [pos, 1, true]);
                console.log(pos);
            }
        })
    }

    setActiveItem();

它现在正在运行。谢谢你的线索。