【问题标题】:loop until meet a class then do something循环直到遇到一个班级然后做某事
【发布时间】:2015-07-17 14:50:03
【问题描述】:

http://jsfiddle.net/ytytb5hu/

如何使用循环使pclass="here" 的所有颜色变为红色?

<p>1</p>
<p>2</p>
<p>3</p>
<p class="here">4</p>
<p>5</p>
.here {
    border:1px solid;
}
p {
    color:blue;
    display:inline-block;
}

【问题讨论】:

  • 为什么要使用循环? $('.here').css('color', 'red');
  • 如果你知道索引,使用 $('p').eq(3).css(
  • 我相信 OP 希望 所有元素到匹配类都变红。不仅是匹配类。
  • @AnoopJoshi 我的数据是动态的,不能那样做。
  • 这些元素都在一个容器中吗?

标签: javascript html zepto


【解决方案1】:

尝试在 :not() 排除选择器,返回过滤后的集合

$("p:not(.here, .here ~ p)").css("color", "red");
.here {
    border:1px solid;
}
p {
    color:blue;
    display:inline-block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p>1</p>
<p>2</p>
<p>3</p>
<p class="here">4</p>
<p>5</p>

【讨论】:

    【解决方案2】:

    这样的? :

    $('p').prevUntil('.here').css('color', 'red');
    

    Demo

    如果您只想更改特定元素,您可以添加第二个参数:

    $('p').prevUntil('.here', 'p').css('color', 'red');
    

    Demo

    函数prevUntil() 将选择元素的所有先前兄弟元素,不包括与选择器匹配的元素。

    参考

    .prevUntil()

    【讨论】:

    • sad zepto没有这个功能。
    • @AaronMusktin 这将是您问题中的一个很好的信息
    【解决方案3】:

    可能有更好的方法,但这会奏效:

    $('p:eq(0)').addClass('red').nextUntil('.here').addClass('red');
    .red{
        
        color:red;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <p>1</p>
    <p>2</p>
    <p>3</p>
    <p class="here">4</p>
    <p>5</p>

    【讨论】:

    • 在使用 zepto 之前我必须使用循环
    • @AaronMusktin 好的,我看看那个,但你应该把它添加到你的问题中
    【解决方案4】:

    如果你知道索引,你可以使用小于运算符lt(index)

    $('p:lt(4)').css('color', 'red');
    

    【讨论】:

      【解决方案5】:
      document.getElementsByTagName("p")[3].setAttribute('class','here');
      

      document.getElementById("container").getElementsByTagName("p")[3].setAttribute('class','here');
      

      css:

      .here{
          color:red;
      }
      

      【讨论】:

        【解决方案6】:

        可以获取.here索引并使用lt

        $('p:lt(' + $('p.here').index() + ')').css('color', 'red');
        

        jsfiddle DEMO

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-10
          相关资源
          最近更新 更多