zorro76
@zorro76

Есть небольшой код, который работает, но с одним маленьким дефектом, как его побороть?

Есть адаптивное многоуровневое меню (скриншот прикладывается), и вот собственно суть небольшого дефекта: при клике на пункт меню (категорию) открываются подпункты и выбираются их значения, все как бы замечательно, но почему-то сами пункты(категории) выбрать нельзя, нажать на них и выбрать их значение. Как-то так обьяснил... Сказали что ошибка в коде, но где не могу понять...

Вот код
<?php if ($categories) { ?>
	<div class="container">
		<a class="toggleMenu" href="#">Menu</a>
		<ul class="nav_menu">
			<?php foreach ($categories as $category) { ?>
			<li><?php if ($category['children']) { ?><?php } ?>
				<a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
				<?php if ($category['children']) { ?>
				<?php for ($i = 0; $i < count($category['children']); $i++) { ?>
				<ul>

					<?php $j = $i + ceil(count($category['children']) / $category['column']); ?>
					<?php for ($i=0; $i < $j; $i++) { ?>

					<?php if (isset($category['children'][$i])) { ?>
					<li>
						<a href="<?php echo $category['children'][$i]['href']; ?>">
							<?php echo $category['children'][$i]['name']; ?></a>
					</li>
					<?php } ?>


					<?php } //for  i < $j ?>

					<?php } //for ($i = 0; $i < count ?>

				</ul>
				<?php } // if ($category['children']) #8 ?>
			</li>

			<?php } // foreach ($categories as $category) ?>
		</ul>
		<div>
	<?php } ?>

4fd3d5361cee4a68b4ab5512dbdd546f.png
Вот js скрипт который обрабатывает:
<script>
		var ww = document.body.clientWidth;
		$(document).ready(function() {
			$(".nav_menu li a").each(function() {
				if ($(this).next().length > 0) {
					$(this).addClass("parent");
				};
			});

			$(".toggleMenu").click(function(e) {
				e.preventDefault();
				$(this).toggleClass("active");
				$(".nav_menu").toggle();
			});
			adjustMenu();
		});

		$(window).bind('resize orientationchange', function() {
			ww = document.body.clientWidth;
			adjustMenu();
		});

		var adjustMenu = function() {
			if (ww < 768) {
				$(".toggleMenu").css("display", "inline-block");
				if (!$(".toggleMenu").hasClass("active")) {
					$(".nav_menu").hide();
				} else {
					$(".nav_menu").show();
				}
				$(".nav_menu li").unbind('mouseenter mouseleave');
				$(".nav_menu li a.parent").unbind('click').bind('click', function(e) {
					// must be attached to anchor element to prevent bubbling
					e.preventDefault();
					$(this).parent("li").toggleClass("hover");
				});
			}
			else if (ww >= 768) {
				$(".toggleMenu").css("display", "none");
				$(".nav_menu").show();
				$(".nav_menu li").removeClass("hover");
				$(".nav_menu li a").unbind('click');
				$(".nav_menu li").unbind('mouseenter mouseleave').bind('mouseenter mouseleave', function() {
					// must be attached to li so that mouseleave is not triggered when hover over submenu
					$(this).toggleClass('hover');
				});
			}
		};
	</script>
  • Вопрос задан
  • 240 просмотров
Решения вопроса 1
При формировании меню, само название категории заключено в тег a, тоесть это ссылка и при клике на неё, должен быть переход в саму категорию, но видимо в данном случае, клик по данной ссылки обрабатывается java script, и взамен перехода, получаем раскрывающиеся список или что то иное. Поэтому для полноты картины, необходимо изучить скрипты которые обрабатывают данное меню
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@cassej
<?php if ($category['children']) { ?><?php } ?>
пустое условие

а в остальном надо знать что хранится в $categories или какой сформировался код html хотя бы
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы