jQuery:使用条件语句将多个类名移动到另一个元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery:使用条件语句将多个类名移动到另一个元素相关的知识,希望对你有一定的参考价值。

我试图创建一个速记条件语句来将找到的类附加到元素。我的代码如下:

   <div class="options-container class1 class2 class3-ul class4">
     <ul class="">
      <li>
        <div class="other-element"></div>
      </li>
    </ul>
  </div>

        $('.options-container').each(function(i){ //holds multiple classes

                var classList = $('ul', this).attr('class').split(/\s+/),
                var myClasses = ['class1', 'class2', 'class3']; 
                //what classes to look for and match.    

             $.each(classList, function(index, item) {

               if (item === myClasses.index()) {
                 $('.other-element').addClass(item); // append matched classes
               }

             });

        });

我不确定我用索引做什么...基本上,我只是想找到div元素(.options-container)是否有某些类,如果是,则将它们移动到元素的类中(。其他元件)

答案

// No need to re-declare this for every iteration
var myClasses = ['class1', 'class2', 'class3'];

$('.options-container').each(function(i) {
  var $this = $(this);
  var classList = $this.attr('class').split(/\s+/);
  var classesToAdd = myClasses.filter(function(element){
    return classList.indexOf(element) > -1;
  });
  
  // Change only the other element that is a child of the ul
  // You can give addClass an array.  You don't have to explicitly
  // loop
  $this.find('.other-element').addClass(classesToAdd);
  
  // From your comments you asked if you could remove the classes
  // from the parent.  You can do that with removeClass.
  $this.removeClass(classesToAdd);
});
div.class1.class2.class3 { color: red; }
div.class1.class2 { color: green; }
div.class1 { color: blue; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="options-container class1 class2 class3-ul class3">
  <ul>
    <li>
      <div class="other-element">A</div>
    </li>
  </ul>
</div>

<div class="options-container class1 class2 class3-ul">
  <ul>
    <li>
      <div class="other-element">B</div>
    </li>
  </ul>
</div>

<div class="options-container class1 class3-ul">
  <ul>
    <li>
      <div class="other-element">C</div>
    </li>
  </ul>
</div>

以上是关于jQuery:使用条件语句将多个类名移动到另一个元素的主要内容,如果未能解决你的问题,请参考以下文章

Javascript将具有多个值的选定选项从一个列表移动到另一个列表

使用准备好的语句将多个带前缀的表移动到存档数据库,为啥这个 MySQL 语句无效?

SQL多个条件查询语句

CodeIgniter:如何使用活动记录将一个列值移动到另一个具有 Where 条件的值

JQuery 插件动画将一个 dom 元素移动到另一个

如何使用jQuery将子元素从一个父元素移动到另一个父元素[重复]