简体   繁体   English

使用切换类时如何仅使一个div一次切换?

[英]How to only make one div has toggled at one time when using toggle class?

 $(document).ready(function(){ $("#items").children().click(function(){ $(this).toggleClass('clicked'); }); }); 
 .clicked { background-color:red; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div id='items'> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> </div> 

Now, I can toggleClass to make div become red color when click. 现在,我可以切换类以使div在单击时变为红色。 But I can still click another div to make it red then I will have two div in red color. 但是我仍然可以单击另一个div使其变为红色,然后将有两个红色的div。

How to only make one div become red at one time? 如何只使一个div一次变红?

Use removeClass and not to exclude the current selection: 使用removeClassnot排除当前选择:

 $(document).ready(function(){ $("#items").children().click(function(){ $('#items > div').not($(this).toggleClass('clicked')).removeClass('clicked'); }); }); 
 .clicked { background-color:red; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div id='items'> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> </div> 

A shorter version: 较短的版本:

$(document).ready(function(){
  $("#items").children().click(function(){
    $('.clicked').not($(this).toggleClass('clicked')).removeClass('clicked');
  });
});

Try this, 尝试这个,

$(document).ready(function(){
    $("#items").children().click(function(){
        $(this).toggleClass('clicked') // toggle class of current element
               .siblings('div') // get siblings of current elem
               .removeClass('clicked'); // remove class clicked from siblings

    });
});

 $(document).ready(function() { $("#items").children().click(function() { $(this).toggleClass('clicked').siblings('div').removeClass('clicked'); }); }); 
 .clicked { background-color: red; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id='items'> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> </div> 

Remove the class of clicked from all the other sibling div s. 删除之类的clicked来自所有其他兄弟div秒。

Use siblings() to select the sibling elements. 使用siblings()选择同级元素。

Get the siblings of each element in the set of matched elements, optionally filtered by a selector. 获取匹配的元素集中每个元素的同级,可以选择使用选择器进行过滤。

 $(document).ready(function() { $("#items").children().click(function() { $(this).toggleClass('clicked').siblings('div').removeClass('clicked'); }); }); 
 .clicked { background-color: red; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div id='items'> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> </div> 

 $(document).ready(function() { $("#items").children().click(function() { $(this) //clicked element .add('.clicked', this.parentNode)//add already '.clicked' child element in jq set .toggleClass('clicked');//toggle class for all elements in set }); }); 
 .clicked { background-color: red; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div id='items'> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> </div> 

You can do: 你可以做:

$(document).ready(function(){
  $("#items").children().click(function(){
    $(this).siblings().removeClass('clicked');
    $(this).addClass('clicked');
  });
});

HI now try to this way 嗨,现在尝试这种方式

$(document).ready(function(){
      $("#items > div").click(function(){
       $("#items").children().removeClass('clicked');
        $(this).addClass('clicked');
      });
    });

 $(document).ready(function(){ $("#items > div").click(function(){ $("#items").children().removeClass('clicked'); $(this).addClass('clicked'); }); }); 
 .clicked { background-color:red; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div id='items'> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> </div> 

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

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