Используйте имена классов для загрузки соответствующих путей к изображениям

#javascript #jquery

#javascript #jquery

Вопрос:

Как я мог бы написать javascript, который выполняет итерацию по таблице, захватывает класс, а затем заменяет его изображением? Так, например, у меня есть таблица со столбцами, к которым добавлены числовые классы:

 <td class="images 12-345"></td>
<td class="images 98-763"></td>
 

Эти числа совпадают с именами изображений, которые я хочу загрузить с помощью javascript после завершения обработки остальной части запроса. Таким образом, конечный продукт будет выглядеть так :

 <td class="images 12-345"><img src="http://site.com/12-345.jpg"></td>
<td class="images 98-763"><img src="http://site.com/98-763.jpg"></td>
 

Но не раньше, чем все загрузится. Я хотел бы просто иметь там графическое изображение-заполнитель, которое заменяется правильным файлом изображения после того, как все обработано.

Как бы я перебирал эти строки, а затем загружал соответствующее изображение в каждую ячейку? Сначала я подумал, что мог бы использовать селектор .images для извлечения каждого уникального числового имени класса и передачи его в переменную. Затем с помощью этой переменной я мог бы добавить ее к остальной части пути к изображению и поместить обратно в соответствующую ячейку таблицы. Я бы не хотел, чтобы это начинало обработку до тех пор, пока не завершится загрузка остальной части dom и не будет завершен исходный sql-запрос. Могу ли я, пожалуйста, дать несколько советов о том, как лучше всего это написать. jQuery — это вариант для меня.

Ответ №1:

Вы могли бы сделать что-то подобное с помощью jQuery:

 $('td.images').each(function() {
    var $td     = $(this);
    var classes = $(this).attr('class').split(/s /);
    var num     = $.grep(classes, function(c) { return c.match(/^[d-] $/) });
    if(num.length)
        $td.append('<img src="http://site.com/'   num[0]   '.jpg">');
});
 

Демонстрация (только с числами в ячейках): http://jsfiddle.net/ambiguous/vrDvc/1 /

Возможно, вам потребуется настроить $.grep и то, как вы обрабатываете num массив, чтобы он соответствовал вашим реальным данным, но базовая техника должна работать.

Комментарии:

1. Спасибо, я попробую это. Я только что понял, что мой пример никуда не годится, потому что класс — это не просто числа, они написаны через дефис. Я обновил свой вопрос, чтобы отразить это.

2. @Zac: этот формат просто нуждается в небольшой настройке регулярного выражения, посмотрите, пожалуйста, мое обновление.

3. Спасибо! Это круто и делает то, что я просил. Однако это не решает мою проблему.. Я думал, что при загрузке с помощью такого скрипта это остановит сбой браузера, но количество или запросы по-прежнему кажутся подавляющими. Вернемся к чертежной доске. Спасибо за вашу помощь.