Здравствуйте, делаю сравнение товаров на сайте, у многих товаров не заполнены характеристики, помогите пожалуйста написать функцию, которая будет удалять строки где все ячейки, кроме первой, пустые.
Пример в песочнице Код (Javascript): var table = $('table'); cols = $('tr:first td',table).length - 1; $('tr', table).each(function(i, tr){ if($('td', tr).filter((i, td) => $.trim($(td).text()) === '').length === cols) { $(tr).remove(); } }); --- Добавлено --- На всякий случай, вариант на нативном: Код (Javascript): var table = document.querySelector('table'); table.querySelectorAll('tr').forEach((tr) => { if ([].slice.call(tr.querySelectorAll('td:not(:first-child)')) .every((el) => el.textContent.trim() === '')) { tr.parentNode.removeChild(tr); } }); --- Добавлено --- P.S. Кол-во строк с использованием jQuery и без == 7. Нужно ли подключать библиотеку, которая весит 80 с лишним КБ?
Cпасибо большое, все работает отлично, но есть одно но: если на странице несколько таблиц, то эти скрипты не работают, если оставить одну таблицу, то все работает
В цикле выполнить для каждой таблице Код (Javascript): var tables = $('table'); tables.each(function(i, table) { var cols = $('tr:first td', table).length - 1; $('tr', table).each(function(i, tr) { if ($('td', tr).filter((i, td) => $.trim($(td).text()) === '').length === cols) { $(tr).remove(); } }); });
@Deonis вопрос из любопытства. Зачем ты юзаешь JQuery, если знаешь нативный JS ? ) или JQuery просто знаешь и не юзаешь?
Спасибо огромное. Есть еще небольшая проблема, некоторые ячейки у меня имеют такую структуру: <td><a><img></img><a><td>, т.е. для скрипта они пустые, но на самом деле их не нужно скрывать,т.к. там картинки товаров
Моё знакомство с JS началось лет семь назад и именно с jQuery. Только через год-полтора, я понял, что без нативного далеко не уедешь. Многие проекты, которые мне приходилось и приходиться дорабатывать, уже написаны с использованием jQuery и там я пишу на нём. А в тех, что начинаю сам и, где jQuery действительно неоправдан, пишу на нативном. Или, например, клиент нашел и хочет подключить какой-нибудь bootstrap-овский шаблон, а там уже jQuery задействован. Измените: 1. Если jQuery, то метод .text() на .html() 2. Если читый JS, то свойство textContent на innerHTML --- Добавлено --- @TeslaFeo, ах, да... Я совсем забыл про еще один фактор - лень иногда берет верх
@Deonis, уже пишешь всё только на новом синтаксисе, как в примерах? По поводу браузеров, которые его не поддерживают, не паришься?
Как же без этого? До сих пор попадаются клиенты, которым нужна поддержка древних ослов. Выручает Babel JS