Я тестирую в 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>
Согласно документации jQuery, .each () смоги получать два параметра: первый - index элемента в порядке повторения (целое число) и второй - элемент, на котором он повторяется в этом моменте.
Возможно делать двух форм:
Не перемещая никакого параметра его и используя this
чтобы относиться к настоящему элементу:
$("#miTabla td").each(function(){
$(this).addClass("miNuevoEstilo");
});
Перемещать два параметра и использовать второй параметр, что-то сходное с тем, что ты попробовал:
$("#miTabla td").each(function(index, element){
element.addClass("miNuevoEstilo");
});
$.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>
Это не прямой ответ, но нужно отмечать, что 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>
Как вклад оставил другое решение, не используя 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')
})