keslo
@keslo

Как можно улучшить код на JQuery?

Еще раз добрый день.
Есть такой код:
// add class and button
	var option = ['item-id', 'item-title', 'item-price', 'delete-btn'];
	$('#sf tr').each( function() {
		// add button "Add to cart"
		$(this).add('<td></td>');
		$(this).find('td:last').append('<a class="add_item">Добавить в корзину</a>');

		// add class
		$(this).find('td').each( function(index, element) {
			$(element).addClass(option[index]);
		});
	});

Но есть такое чувство, что он мягко говоря "не очень". Посоветуйте как оптимизировать его.
  • Вопрос задан
  • 258 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Я же вам здесь очень подробно ответил.
Принципы, которые там описаны, применяются одинаково хорошо и для ванильного js и для jquery.

var classes = ['item-id', 'item-title', 'item-price', 'delete-btn'];

$('#sf tr').each(function () {
    var $cell = $('<td>').append('<a class="add_item">Добавить в корзину</a>');
    
    $(this).append($cell);

    $(this).find('td').each(function (index, element) {
        $(element).addClass(classes[index]);
    });    
});


Или вот такой вариант, без итерации по строкам:
var classes = ['item-id', 'item-title', 'item-price', 'delete-btn'],
    $rows = $('#sf tr').filter(':gt(0)'),
    $link = $('<a>').addClass('add_item').text('Добавить в корзину'),
    $cell = $('<td>').append($link),
    $cells;

$rows.append($cell);

$cells = $rows.find('td');

$cells.each(function (index, cell) {
    $(cell).addClass(classes[index % classes.length]);
});


Интересные, кстати, получаются результаты сравнения скорости работы этих двух вариантов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BuriK666
@BuriK666
Компьютерный псих
Можно
$(this).add('<td></td>');
$(this).find('td:last').append('<a class="add_item">Добавить в корзину</a>');

заменить на:
$(this).add($('<td><a class="add_item">Добавить в корзину</a></td>'));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
27 нояб. 2024, в 13:07
10000 руб./за проект
27 нояб. 2024, в 12:53
70000 руб./за проект
27 нояб. 2024, в 12:50
25000 руб./за проект