Я не функционирует функция each

Я тестирую в jQuery функцию, чтобы менять несколько элементов на блок (each), но не нахожу ошибку, он не меняет мне класс td.

<!DOCTYPE html>
<html>
<head>
<title>Cuadrícula en Bootstrap</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</head>

<body>
<div id="miElemento">

</div>
<form action="miPagina.php" id="miFormulario" target="">
<input type="text" id="miCampo" value="Texto del campo"></input>
</form>
<a class="miEnlace" href="#" title="">Enlace</a>
<table class="table table-bordered" id="miTabla">
   <tr>
  <td class="">Hola</td>
  <td>Hola</td>
 </tr>
 <tr>
  <td>Hola</td>
  <td>Hola</td>
</tr>
<tr>
  <td>Hola</td>
  <td>Hola</td>
</tr>
</table>
<script type="text/javascript">
$(document).ready(function() {

$("#miTabla td").each(function(element){
    element.addClass("miNuevoEstilo");
});
});
</script>
</body>
</html>
3
задан 29.07.2016, 18:45
4 ответа

Согласно документации jQuery, .each () смоги получать два параметра: первый - index элемента в порядке повторения (целое число) и второй - элемент, на котором он повторяется в этом моменте.

Возможно делать двух форм:

  1. Не перемещая никакого параметра его и используя this чтобы относиться к настоящему элементу:

    $("#miTabla td").each(function(){
      $(this).addClass("miNuevoEstilo");
    });
    
  2. Перемещать два параметра и использовать второй параметр, что-то сходное с тем, что ты попробовал:

    $("#miTabla td").each(function(index, element){
      element.addClass("miNuevoEstilo");
    });
    
2
ответ дан 24.11.2019, 13:45

$.each не функционирует равно как он forEach из языка сценариев JavaScript. Чтобы соглашаться на элемент внутри each ты можешь делать $(this):

$("#miTabla td").each(function(){
    $(this).addClass("miNuevoEstilo");
});

В конце концов cГіdigo quedarГ - в asГ-:

<!DOCTYPE html>
<html>
<head>
<title>Cuadrícula en Bootstrap</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</head>

<body>
<div id="miElemento">

</div>
<form action="miPagina.php" id="miFormulario" target="">
<input type="text" id="miCampo" value="Texto del campo"></input>
</form>
<a class="miEnlace" href="#" title="">Enlace</a>
<table class="table table-bordered" id="miTabla">
   <tr>
  <td class="">Hola</td>
  <td>Hola</td>
 </tr>
 <tr>
  <td>Hola</td>
  <td>Hola</td>
</tr>
<tr>
  <td>Hola</td>
  <td>Hola</td>
</tr>
</table>
<script type="text/javascript">
$(document).ready(function() {

$("#miTabla td").each(function(){
    $(this).addClass("miNuevoEstilo");
});
});
</script>
</body>
</html>
0
ответ дан 24.11.2019, 13:45

Это не прямой ответ, но нужно отмечать, что addClass применяет стиль ко всем элементам , которые возвращали бы query. Следовательно не было бы необходимым использовать each, так как он это делает внутри.

FГ-jate этот пример:

$("#miTabla td").addClass("miNuevoEstilo");
.miNuevoEstilo {
  color: red;  
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="table table-bordered" id="miTabla">
   <tr>
  <td class="">Hola</td>
  <td>Hola</td>
 </tr>
 <tr>
  <td>Hola</td>
  <td>Hola</td>
</tr>
<tr>
  <td>Hola</td>
  <td>Hola</td>
</tr>
</table>
0
ответ дан 24.11.2019, 13:45

Как вклад оставил другое решение, не используя jQuery, что внизу моя точка зрения гораздо элегантнее (и шага мы уберегаемся груз их 94KB версии для производства jQuery).

const tds = document.querySelectorAll('#miTabla td')
[].forEach.call(tds, td => {
  td.addClass('tuNuevoEstilo') 
})

И еще одна версия в стиль ES6 используя spread operator могла бы быть нечто похожим:

[...document.querySelectorAll('#miTabla td')].forEach(td => {
  td.addClass('tuNuevoEstilo') 
})
0
ответ дан 24.11.2019, 13:45

Теги

Похожие вопросы