简体   繁体   English

toggleClass在循环中选择jquery

[英]toggleClass select in loop jquery

I have a loop: 我有一个循环:

$(document).ready(function(){
    $(".viewonclick").click(function(){
        $(this).closest('.viewonclick').next(".hideonclick").slideToggle();       
        $(".plus").toggleClass("hideplus");
    });
});
.viewonclick i{
    position : absolute;
    right: 220px;
    display: inline;
}
.viewonclick .hideplus{
    display: none;
}
@foreach($customcat as $c)
<div>
    <div class="viewonclick"><h4>{{ $c->Custom->name }}
    <i class="plus icon"></i>
    <i class="minus icon"></i>
    </h4></div>
    <ul class="hideonclick">
      @foreach($customvalue as $v)
        <li>
          @if($v->custom_id == $c->custom_id)
           <a class="customcatvalue" data-customid="{{$c->custom_id}}" data-valueid="{{$v->id}}" data-section="{{ $section->id }}">
            {{ $v->value }}
            </a>
          @endif
        </li>
      @endforeach 
    </ul>
</div>
@endforeach

When the loop works all elements having the class plus are changed to have hideplus instead. 当循环工作时,所有具有类plus元素都会改为具有hideplus I only need the clicked element to take this class. 我只需要clicked元素来上这堂课。 I tried the .next() and .closest() method. 我尝试了.next().closest()方法。 It worked with .slideToggle() but not with .toggleClass() . 它可以与.slideToggle()一起使用,但不能与.toggleClass()

This because you have this line: 这是因为您有以下行:

$(".plus").toggleClass("hideplus");

and this line of code acts on all ".plus" elements. 并且这行代码作用于所有“ .plus”元素。

Change this to: 更改为:

$(this).find(".plus").toggleClass("hideplus");

An example: 一个例子:

 $(function () { $('.plus.icon').toggleClass("hideplus"); $(".viewonclick").click(function(){ $(this).next(".hideonclick").slideToggle(); $(this).find("i").toggleClass("hideplus"); }); }); 
 .viewonclick i{ position : absolute; right: 220px; display: inline; } .viewonclick .hideplus{ display: none; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div> <div class="viewonclick"><h4>name1 <i class="plus icon">+</i>&nbsp; <i class="minus icon">-</i> </h4></div> <ul class="hideonclick"> <li> <a class="customcatvalue" data-customid="{{$c->custom_id}}" data-valueid="{{$v->id}}" data-section="{{ $section->id }}"> value1 </a> </li> <li> <a class="customcatvalue" data-customid="{{$c->custom_id}}" data-valueid="{{$v->id}}" data-section="{{ $section->id }}"> value1 </a> </li> <li> <a class="customcatvalue" data-customid="{{$c->custom_id}}" data-valueid="{{$v->id}}" data-section="{{ $section->id }}"> value1 </a> </li> </ul> </div> <div> <div class="viewonclick"><h4>name2 <i class="plus icon">+</i>&nbsp; <i class="minus icon">-</i> </h4></div> <ul class="hideonclick"> <li> <a class="customcatvalue" data-customid="{{$c->custom_id}}" data-valueid="{{$v->id}}" data-section="{{ $section->id }}"> value1 </a> </li> <li> <a class="customcatvalue" data-customid="{{$c->custom_id}}" data-valueid="{{$v->id}}" data-section="{{ $section->id }}"> value1 </a> </li> <li> <a class="customcatvalue" data-customid="{{$c->custom_id}}" data-valueid="{{$v->id}}" data-section="{{ $section->id }}"> value1 </a> </li> </ul> </div> <div> <div class="viewonclick"><h4>name3 <i class="plus icon">+</i>&nbsp; <i class="minus icon">-</i> </h4></div> <ul class="hideonclick"> <li> <a class="customcatvalue" data-customid="{{$c->custom_id}}" data-valueid="{{$v->id}}" data-section="{{ $section->id }}"> value1 </a> </li> <li> <a class="customcatvalue" data-customid="{{$c->custom_id}}" data-valueid="{{$v->id}}" data-section="{{ $section->id }}"> value1 </a> </li> <li> <a class="customcatvalue" data-customid="{{$c->custom_id}}" data-valueid="{{$v->id}}" data-section="{{ $section->id }}"> value1 </a> </li> </ul> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM