Библиотека Cash предоставляет компактный и
высокопроизводительный инструмент для работы с DOM, вдохновленный
jQuery, но с минимальным размером. Одной из частых задач является
манипуляция ссылками и медиа-ресурсами через атрибуты href
и src. Понимание их особенностей важно для корректного
управления элементами.
Атрибут href чаще всего применяется к
элементам <a>, <link> и
<area>. Он определяет путь к ресурсу, на который
ссылается элемент. Атрибут src
используется для загрузки внешних ресурсов, таких как изображения
(<img>), скрипты (<script>), видео
и аудио (<video>, <audio>).
href указывает на место назначения
ссылки.src указывает на ресурс, который необходимо
загрузить в текущий элемент.Ключевое отличие: href не инициирует немедленную
загрузку ресурса, тогда как src — инициирует. При изменении
src браузер сразу попытается загрузить новый файл.
В Cash работа с атрибутами осуществляется через метод
.attr().
Чтение атрибута:
let url = $('a').attr('href');
let imageSource = $('img').attr('src');
В этом случае .attr() возвращает строку с текущим
значением атрибута. Если элемент имеет несколько совпадений, метод
возвращает значение первого найденного.
Установка атрибута:
$('a').attr('href', 'https://example.com');
$('img').attr('src', 'image.jpg');
При передаче двух аргументов метод обновляет атрибут для всех выбранных элементов.
Использование функции для динамических значений:
$('a').attr('href', function(index, oldValue) {
return oldValue + '?ref=123';
});
Функция позволяет получать старое значение и создавать новое на основе него, что особенно полезно для динамически формируемых ссылок или медиа.
Атрибуты href и src могут содержать
относительные или абсолютные URL. Важно учитывать, что:
href относительно документа, в котором находится
<a> или <link>.src также относительно документа, но при вставке
скриптов и изображений браузер автоматически инициирует загрузку.При использовании Cash изменение относительного пути на абсолютный можно сделать через функцию:
$('img').attr('src', function(_, src) {
return new URL(src, window.location.href).href;
});
Это гарантирует корректное разрешение URL независимо от текущей структуры документа.
Изменение href у <a> влияет только на
действие по клику, не инициируя загрузку. Исключение составляют
<link rel="stylesheet"> или
<link rel="import">, где изменение href
может подтянуть новые стили или шаблоны.
Изменение src у элементов <img>,
<script>, <iframe> приводит к
немедленной загрузке ресурса. Важно учитывать:
src, выполняются после
загрузки.src требуют вызова методов
.load() или .play() для начала
воспроизведения.Атрибуты без значения: В HTML допустим
<a href> без значения. Cash корректно возвращает
undefined при чтении и игнорирует установку пустого
значения при использовании .attr('href', null).
Объекты и массивы: Значения атрибутов всегда строки. Любые объекты необходимо сериализовать:
$('a').attr('href', JSON.stringify({page: 1}));
.removeAttr() позволяет удалить href или
src, что эквивалентно очистке поведения элемента:$('img').removeAttr('src');
$('a').removeAttr('href');
Удаление src у <img> приводит к
исчезновению картинки, а удаление href у
<a> делает ссылку неактивной.
.attr() и .removeAttr() применяются ко всем
выбранным элементам. Для обработки конкретного индекса можно
использовать метод .eq():$('img').eq(0).attr('src', 'first.jpg');
Cash минимально использует API браузера, поэтому операции с
href и src практически не отличаются по
производительности от нативного JS. Для массового изменения атрибутов
важно:
.each(), если можно
воспользоваться .attr() сразу для коллекции.href управляет ссылочными действиями, но не загружает
ресурс.src инициирует загрузку и может влиять на визуальное
отображение и выполнение скриптов..attr(), .removeAttr()
позволяют гибко управлять атрибутами для одиночных и множественных
элементов.URL для получения абсолютного пути при необходимости.Эти особенности делают работу с href и src
в Cash предсказуемой и оптимальной для современных веб-приложений.