【问题标题】:jQuery Looping through each li and checking for a classjQuery循环遍历每个li并检查一个类
【发布时间】:2016-04-20 11:11:50
【问题描述】:

我正在尝试用 jQuery 做一些简单的事情,但遇到了困难。我想做以下事情

  1. 遍历每个 li 元素并检查它是否应用了特定的类“时间轴倒置”

  2. 如果我要查找的类存在于 li 上,那么我想应用一些进一步的类 'visible animated fadeInRight'

  3. 如果该类不存在,那么我想应用一个替代类“可见动画fadeInLeft”

这是我目前所拥有的......

HTML 输出

<ul class="timeline">
    <li class="hidden">
        <div class="timeline-image">
            <img class="img-circle img-responsive" src="assets/img/about/1.jpg" alt="">
        </div>
        <div class="timeline-panel">
            <div class="timeline-heading">
                <h4>2009-2010</h4>
                <h4 class="subheading">Our Humble Beginnings</h4>
            </div>
            <div class="timeline-body">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt ut voluptatum eius sapiente, totam reiciendis temporibus qui quibusdam, recusandae sit vero unde, sed, incidunt et ea quo dolore laudantium consectetur!</p>
            </div>
        </div>
    </li><!-- /timeline item -->
    <li class="timeline-inverted hidden">
        <div class="timeline-image">
            <img class="img-circle img-responsive" src="assets/img/about/1.jpg" alt="">
        </div>
        <div class="timeline-panel">
            <div class="timeline-heading">
                <h4>March 2011</h4>
                <h4 class="subheading">An Agency is Born</h4>
            </div>
            <div class="timeline-body">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt ut voluptatum eius sapiente, totam reiciendis temporibus qui quibusdam, recusandae sit vero unde, sed, incidunt et ea quo dolore laudantium consectetur!</p>
            </div>
        </div>
    </li><!-- /timeline item -->
    <li class="hidden">
        <div class="timeline-image">
            <img class="img-circle img-responsive" src="assets/img/about/1.jpg" alt="">
        </div>
        <div class="timeline-panel">
            <div class="timeline-heading">
                <h4>July 2014</h4>
                <h4 class="subheading">Phase Two Expansion</h4>
            </div>
            <div class="timeline-body">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt ut voluptatum eius sapiente, totam reiciendis temporibus qui quibusdam, recusandae sit vero unde, sed, incidunt et ea quo dolore laudantium consectetur!</p>
            </div>
        </div>
    </li><!-- /timeline item -->
    <li class="timeline-inverted hidden">
        <div class="timeline-image">
            <img class="img-circle img-responsive" src="assets/img/about/1.jpg" alt="">
        </div>
        <div class="timeline-panel">
            <div class="timeline-heading">
                <h4>December 2014</h4>
                <h4 class="subheading">Another great month</h4>
            </div>
            <div class="timeline-body">
                <p>It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
            </div>
        </div>
    </li><!-- /timeline item -->
    <li class="timeline-inverted">
        <div class="timeline-image">
            <h4>
                Be Part
                <br>Of Our
                <br>Story!
            </h4>
        </div>
    </li><!-- /.timeline -->
</ul> 

jQuery

$('.timeline li').each(function () {
    if ($(this).hasClass("timeline-inverted")) {
        $('.timeline li').removeClass("hidden").viewportChecker({
            classToAdd: 'visible animated fadeInRight', offset: 100
        });

    } else {
        $(this).removeClass("hidden").viewportChecker({
            classToAdd: 'visible animated fadeInLeft', offset: 100
        });
    }
});

如果 li 项目具有时间轴倒置类,我希望它从右侧飞入,如果它没有时间轴倒置类,我希望它从左侧飞入!

谢谢保罗

*编辑 - 这段代码对我有用 :)

$(function () {
    $('.timeline li').each(function () {
        if ($(this).hasClass("timeline-inverted")) {
            $(this).removeClass("hidden").viewportChecker({
                classToAdd:'visible animated fadeInRight', offset: 100
            });

        } else {
            $(this).removeClass("hidden").viewportChecker({
                classToAdd: 'visible animated fadeInLeft', offset: 100
            });
        }
    });
});

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    您不需要使用each()。你可以像下面那样做。

    $('.timeline li.timeline-inverted').removeClass("hidden").viewportChecker({
        classToAdd: 'visible animated fadeInRight',
        offset: 100
    });
    
    $('.timeline li').not('.timeline-inverted').removeClass("hidden").viewportChecker({
        classToAdd: 'visible animated fadeInLeft',
        offset: 100
    });
    

    【讨论】:

      【解决方案2】:

      试试这个:将你的脚本放在$(function(){..}); 中,并使用$(this) 而不是$('.timeline li')

      $(function(){
        $('.timeline li').each(function () {
              if ($(this).hasClass("timeline-inverted")) {
                  $(this).removeClass("hidden").addClass('visible animated fadeInRight').viewportChecker({
                      offset: 100
                  });
      
              } else {
                  $(this).removeClass("hidden").addClass('visible animated fadeInLeft').viewportChecker({
                      offset: 100
                  });
              }
          });
      });
      

      【讨论】:

      • 太棒了!很高兴为您提供帮助:)
      猜你喜欢
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 2015-08-26
      • 2021-03-11
      • 2021-12-18
      • 1970-01-01
      相关资源
      最近更新 更多