如何一次选择数组中的所有项目,并为它们添加类

时间:2016-09-25 18:28:52

标签: javascript css jquery-selectors

我希望这个函数隐藏html中的按钮,给它们提供css .hidden属性。我已经尝试了[0,1,2,3,4],但它没有按照假设工作,这段代码有效,但我想知道是否有更有效的方法来做到这一点..?

function hideButtons(){
var buttons = document.querySelectorAll('.buttons');
  buttons[0].classList.add('hidden'); 
  buttons[1].classList.add('hidden');
  buttons[2].classList.add('hidden');
  buttons[3].classList.add('hidden');
  buttons[4].classList.add('hidden');
}

7 个答案:

答案 0 :(得分:3)

使用简单的循环

 $('selector').addClass('class_name');

答案 1 :(得分:1)

您不能一次向所有数组元素添加一个类,无论您选择哪种技术,都必须迭代数组;幸运的是,JavaScript有几种方法可以迭代Arrays。

如果您能够使用ES6,则可以访问function hideButtons(){ // document.querySelectorAll() retrieves all elements // matching the supplied CSS selector, and returns // a non-live NodeList: var buttons = document.querySelectorAll('.buttons'); // Array.from() converts the supplied Array-like object // into an Array, enabling the use of Array methods: Array.from( buttons ) // here button represents the current element // of the Array of buttons over which we're iterating, // the expression following the fat arrow ('=>') // is executed on each iteration, and adds the 'hidden' // class-name to each element of the Array: .forEach(button => button.addClass('hidden'); } 和箭头功能,可以按如下方式使用:

function hideButtons(){
  var buttons = document.querySelectorAll('.buttons'),

      // here we use Function.prototype.call() to allow
      // us to apply the Array.prototype.slice to the
      // NodeList, creating an Array from the NodeList:
      buttonArray = Array.prototype.slice.call(buttons, 0);

  // here we use Array.prototype.forEach(), with its
  // anonymous function:
  buttonArray.forEach(function(button) {
    // 'button' again refers to the current
    // element of the array of elements over
    // which we're iterating.

    // here we add the 'hidden' class-name to
    // each element of the array over which
    // we're iterating:
    button.classList.add('hidden');
  });
};

如果没有ES6,您可以使用以下内容重新创建上述行为:

Sub SuperSimpleFrequencyTable()
    Dim C As Range, A As Range, B As Range

    Set A = Range("A:A")
    Set B = Range("B:B")

    A.Copy B
    B.RemoveDuplicates Columns:=1, Header:=xlNo
    Set C = B.SpecialCells(xlCellTypeConstants).Offset(0, 1)

    With C
        .Formula = "=countif(A:A,B1)"
        .Value = .Value
    End With
End Sub

参考文献:

答案 2 :(得分:0)

$('.buttons').addClass('hidden');

答案 3 :(得分:0)

试试这个,这是一个更简单的解决方案

can_arr

答案 4 :(得分:0)

您可以使用jQuery进行出价:

$ git push heroku master

答案 5 :(得分:0)

最简单的方法是使用jQuery。 jQuery的类选择器标记文档上的所有元素,并一次对它们执行操作。

您的功能应如下所示:

function hideButtons() {
    $('.buttons').addClass('hidden');
}

但是,首选方法是使用jQuery的函数hide()而不是addClass('hidden')。

答案 6 :(得分:0)

如果您能够使用ES6,请尝试一个简单的forEach循环。

let buttons = document.querySelectorAll('.buttons'); 

buttons.forEach(btn => {
 btn.classList.add('hidden');
});

这将遍历每个按钮元素,并为其添加“ .hidden”类。 这不会替代上一课,只需将其添加到您可能拥有的其他课中即可。

如果以后要使用它,可以将代码放在函数中,然后在需要的地方调用该函数。

希望这会有所帮助。