Уплотнение повторяющегося кода JQuery
-
24-09-2019 - |
Вопрос
У меня есть страница с большим изображением с несколькими миниатюрами.Когда вы наводите указатель мыши на миниатюру, основное изображение меняется на изображение, на которое вы только что навели курсор мыши.Проблема в том, что чем больше у меня эскизов, тем больше у меня повторяющегося кода.Как мне его уменьшить?
Код JQuery выглядит следующим образом.
родовое слово #big_img
= идентификатор полноразмерного изображения
#thumb1
, #thumb2
, #thumb3
, #thumb4
= идентификаторы миниатюр
Основной код страницы - PHP, если это помогает.
Решение
Прежде всего, вам следует изменить свой код так, чтобы на каждом эскизе был легко найти «класс».
Если у вас есть
родовое слововаш HTML должен выглядеть как
родовое словоВо-вторых, вы должны убедиться, что у вас есть идентифицируемый шаблон между всеми вашими миниатюрами и их большим изображением.В вашем коде есть
родовое словоВ какой организации хранятся ваши файлы?
Давайте представим, что эскизы имеют тот же src, что и изображения ошибок
Код jQuery будет уменьшен до:
родовое словоЭтот код должен работать и просто ожидает алгоритма, который преобразует src большого пальца в src большого изображения
Надеюсь, это поможет вам Джером Вагнер
Другие советы
$(this)
- ваш друг.Вам также необходимо разработать некую номенклатуру, которую вы можете использовать для сопоставления имен ваших файлов и идентификаторов.Обычно я использую PHP для генерации HTML, но добавляю специальные атрибуты, обрабатывающие имена файлов:
Затем я перейду к следующему шагу:
родовое слово Метод Fehays определенно работает, но в этом случае у вас не будет тонны ненужных идентификаторов, и вам не придется выполнять ненужную передачу параметров.Он будет автоматически распространяться на каждый экземпляр в DOM с классом thumb
.
Думаю, вы могли бы просто написать функцию.
родовое словоЯ думаю, что самое чистое, что вы могли бы сделать, - это расширить jQuery, включив в него нужную вам функциональность:
родовое словоВы можете проверить это здесь! http://jsfiddle.net/jPYyZ/
====== Обновить=======
Если вы хотите создать систему эскизов / предварительного просмотра при наведении указателя мыши, это все, что нужно:
родовое словоВы можете протестировать / повозиться с этим здесь: http://jsfiddle.net/AhwH7/