代码之家  ›  专栏  ›  技术社区  ›  Leo Messi

在ng类中删除和添加类

  •  0
  • Leo Messi  · 技术社区  · 6 年前

    具有一些元素,其中包含工作方式类似于三元运算符的ng类:

    ng-class="$ctrl.something ? 'fa-minus' : 'fa-plus'"

    例如,为了访问它们,所有元素 fa-minus 可以存储在列表中:

    const elementList = document.querySelectorAll('.fa-minus');
    

    我的问题是是否可以在ng类中修改。例如,对于所有具有 fa减 把它改成 fa-square

    我尝试了几种方法,如删除和添加之后的类:

        const elementList = document.querySelectorAll('.fa-minus');
        document.forEach(document=> document.classList.remove('.fa-minus'));
        document.forEach(document=> document.classList.add('fa-square'));
    

    它不起作用,可能是因为原始的是一个ng类,而不是一个典型的css类。

    它不应该改变原来的ng类。我只想在创建导出文件的函数中更改它

    2 回复  |  直到 6 年前
        1
  •  2
  •   Pankaj Parkar charlietfl    6 年前

    使用AngularJS时避免直接操作DOM。你可以用下面的代码以角的方式来做。

    ng-class="$ctrl.getClass()"
    

    控制器

    var $ctrl = this;
    var MINUS = 'fa-minus';
    var PLUS = 'fa-plus';
    
    getClass () {
       return $ctrl.something ? MINUS : PLUS
    }
    
    changeMinusClass(newClass) {
       MINUS = newClass
    }
    
    onClickOfSomething () {
       this.changeMinusClass('fa-square')
    }
    
        2
  •  1
  •   Mamun    6 年前

    你可以 remove() 刚才的课 add() . 你不应该用 document

    以下示例显示了如何执行此操作:

    var d = document.querySelectorAll('span');
    d.forEach(el=> {
      el.classList.remove('fa-minus');
      el.classList.add('fa-square');
    });
    
    // for demonstration
    document.querySelectorAll('span').forEach(s => console.log(s.getAttribute('class')));
    <span class="fa-minus">Test 1</span>
    <span class="fa-minus">Test 2</span>