Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Вопрос программистам jQuery (display: list / grid)


Recommended Posts

Правильно ли я понимаю, что отображение товаров на странице категории формируется  и списком, и сеткой при загрузке страницы. А скрипт по клику просто показывает нужный блок и скрывает не нужный?

 

Проблема возникла в следующем:

У меня на элемент внутри класса .name подвешен скрипт...

Для каждого товара формируется уникальный id элемента и выполнение скрипта привязывается к нему (скрипт выполняется по событию hover())

И все прекрасно работает, пока не переключишь list / grid.

 

Мне кажется что это связано с конфликтом id'шников, т.к. если мое предположение в начале поста верно, то на 1 странице я получаю 2 элемента с одним и тем же id

Сейчас я решаю эту проблему подвешиванием функции location.reload() на переключатели, но это как-то не комильфо...

 

Верен ли ход моих мыслей?

Надіслати
Поділитися на інших сайтах

 

Правильно ли я понимаю, что отображение товаров на странице категории формируется  и списком, и сеткой при загрузке страницы. А скрипт по клику просто показывает нужный блок и скрывает не нужный?

И да, и нет.

Система отдает некую структуру, например в list

Условно

list
  div
   image
   name
   description
  /div
/list

По идее переключив в grid только меняются только стили

 

Но, в зависимости от дизайна блоки внутри могут перемещаться - так иногда проще для верстки

 

Если использовать только перемещение блоков, то привязанные к этим блокам евенты никуда не пропадают.

Пропадут только при удалении/ создании новых блоков

 

Поэтому в функции display нужно стараться не испортить существующие events

  • +1 1
Надіслати
Поділитися на інших сайтах

По идее переключив в grid только меняются только стили

 

Это было бы логично... Я так изначально и предполагал,... Но тогда для меня остается загадкой почему при переключении скрипт не выполняется, ведь все что мы изменили - это стили... Как только страница обновляется все сразу работает...

Надіслати
Поділитися на інших сайтах

по дефолту перелючение list/grid не скрывает/показывает определенные блоки, а по сути перевёрстывает один блок отображения товаров.

начало этого рендеринга в режиме list

            html  = '<div class="right">';
            html += '  <div class="cart">' + $(element).find('.cart').html() + '</div>';
            html += '  <div class="wishlist">' + $(element).find('.wishlist').html() + '</div>';
            html += '  <div class="compare">' + $(element).find('.compare').html() + '</div>';
            html += '</div>';            

и начало в режиме grid

            html = '';
            
            var image = $(element).find('.image').html();
            
            if (image != null) {
                html += '<div class="image">' + image + '</div>';
            }
            
            html += '<div class="name">' + $(element).find('.name').html() + '</div>';
            html += '<div class="description">' + $(element).find('.description').html() + '</div>';

но есть такие темы, которые именно прячут/показывают два заранее отрисованных блока товаров, впрочем есть которые именно перезагружают страницу для отображения нужного режима.

в общем, лучше адрес с проблемой укажите )

  • +1 1
Надіслати
Поділитися на інших сайтах

в общем, лучше адрес с проблемой укажите )

Пока не хочу светить... т.к. делаю шаблон на продажу... сейчас приглашу Вас в разговор в личке

Надіслати
Поділитися на інших сайтах

ой...

не делайте так

<div class="name">
				<div class="scroll-box" id="scroll-box1">
					<div class="scroller" id="scroller1">
						<a href="/index.php?route=product/product&path=20_26&product_id=42">Apple Cinema 30"  длинное название товара</a>
					</div>
				</div>
</div>

		<script type="text/javascript">
			$(document).ready(function(){
					$jScroller.add("#scroll-box1","#scroller1","left",1, true);
			});
		</script>

После рендеринга - получите весь список элементов .name a

Затем оберните link (а) в нужные контейнеры,

Затем привяжите сам скроллер...

 

Это я к чему... Не усложняйте верстку.

 

И... было бы правильным display()  выполнить в блоке $(document).ready

  • +1 1
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.